求单链表的创建与打印详细解释 程序如下

2025-01-25 08:02:29
推荐回答(1个)
回答1:

//单链表的建立:
LinkList CreateList(void)
{
int i,n=5; /*n因题型而定大小*/
ListNode *head,*p,*q;//遍历链表一般会用到这三个指针,头指针和指前后两个节点的一对指针,这对指针遍历中移动
head=(ListNode*)malloc(sizeof(ListNode));//为头结点申请空间
p=head;//p指向头结点
printf("\n请输入%d整数建立链表:",n);
for(i=1;i {scanf("%d",&(p->data));//从头读入节点数据,第一遍的时候p指head,就把数据读入了HEAD中的data这个变量里
q=(ListNode*)malloc(sizeof(ListNode)); //q指新节点 为新的节点申请空间
p->next=q;//把q连接到P后
p=q;} //p移动到q的位置,就是说p往后挪了一个,指向新的节点。在做循环里读入的操作时,就是对新节点的操作
scanf("%d",&(p->data));//到尾节点时就不再向后移了,读入尾节点信息
p->next=NULL;//尾节点的后继为空
return(head);//返回所建列表头指针的位置
}
//单链表的打印
void PrintList(LinkList head)
{
ListNode *p;//建遍历用的指针 不要直接用头指针移动
printf("\n当前单链表的具体数据为:");
p=head;//从头开始
while(p!=NULL)//p=null时到尾部 跳出循环
{
printf("%d ",p->data);//打印节点内容
p=p->next;//向后移一个位置
}
printf("\n");
}