今天回顾了一下单链表,写了一个简单的单链表插入程序,使用的是头插法,以前学习的不太好,现在来看又有了收获,说明自己的基础还不行。现在贴出代码,希望大家多看看代码里面的注释,提出不同的看法或者纠正在下的错误。
//链表结点
typedef struct Node
{
int data;
struct Node *next;
}*PtrToNode;
void InsrtNode(PtrToNode head,int i)
{
PtrToNode ptr;
//创造新结点
ptr = (PtrToNode)malloc(sizeof(struct Node));
if (ptr == NULL)
{
printf("--内存分配失败--\n");
return;
}
ptr->next = NULL;
ptr->data = i;
//头插法
ptr->next = head->next;
head->next = ptr;
}
//打印链表
void ShowNode(PtrToNode head)
{
while (head != NULL)
{
if (head->data != -1)
{
printf("%3d", head->data);
head = head->next;
}
//头结点data域为-1
else
{
head = head->next;
}
}
putchar('\n');
}
int main()
{
PtrToNode head = (PtrToNode)malloc(sizeof(struct Node)); //创建一个头指针(该链表有头结点)
head->next = NULL;
head->data = -1;
//头插法循环插入0--19
for (int i = 0; i < 20; i++)
InsrtNode(head,i);
ShowNode(head); //打印链表
system("pause");
return 0;
}
运行结果:
转载:https://blog.csdn.net/weixin_43326322/article/details/102573724
查看评论