这个链表程序什么意思??急!!!

来源:百度知道 编辑:UC知道 时间:2024/06/16 00:08:08
#include<stdio.h>
#include<stdlib.h>

typedef struct node{
char a;
struct node *next;
}NODE;

NODE *head;

NODE *insertNode(int n)
{
NODE *p, *q;
p = (NODE*)malloc(sizeof(NODE));
p ->a = n;
p ->next = NULL;
if(head == NULL)
{
head = p;
}
else
{
for(q = head; q ->next; q = q ->next);
q ->next = p;
}
return head;
}

main()
{
int n;
NODE *p;
head = NULL;

printf("Please Enter number:\n");
while(scanf("%d",&n)){

printf("Please Enter number:\n");
flushall();
head = insertNode(n);
}

for(p = head; p; p = p ->next)
printf("%d\n",p ->a);

p=head;
while(p)
{
head=p->next;
free(p);
p=head;
}

-----------我为你作了详细的注释------------------
#include<stdio.h>
#include<stdlib.h>

typedef struct node{
char a; //数据域。我个人认为,此处的数据类型与下面的不一至。此处为char,下面为int.
struct node *next; //定义一个单链表.指针域。
}NODE; //为struct node取别名:NODE.

NODE *head; //定义一个头节点(带头节点的单链表)。

NODE *insertNode(int n)
{ //插入一个节点。返回指针域。
NODE *p, *q;//定义两个节点指针。
p = (NODE*)malloc(sizeof(NODE)); //动态分配一个节点大小的内存空间。并转换成NODE 节点类型。
p ->a = n; //将值插入到数据域。
p ->next = NULL;//并将说明为尾节点。说明是后插操作。
if(head == NULL)
{ //如果只有一个头节点时,用P改写它。
head = p;
}
else
{ //如果有多个节点了,就往下找,直到找到最后一个节点。
for(q = head; q ->next; q = q ->next);
q ->next = p; //当找到尾节点后,将P改写它。
}
return head; //返回先前保存好的链表的头节点。
}

main()
{
int n;
NODE *p; //初始化一个节点。注意此为单链表。
head = NULL;//设头节点为空。

printf("Please Enter number:\n");
while(scanf("%d&quo