这段C语言单链表插入代码的插入位置是表头、指定位置还是表尾?
这段C语言单链表代码是在链表末尾执行插入操作
咱们一步步拆解这段代码的运行逻辑,帮你搞明白:
- 创建新节点
nn = (struct node*) malloc(sizeof(struct node));
这行代码给新节点(nn)分配内存,要是内存分配失败,就打印提示并退出函数。
- 给新节点赋值
printf("\n enter the item:"); scanf("%d",&i); nn->info = i; nn->link = NULL;
先让你输入要插入的整数,把这个数存到新节点的info字段里;同时把新节点的link设为NULL——因为它最后会成为链表的末尾节点,后面不会再接其他节点。
- 核心插入逻辑
- 如果
start == NULL,说明链表现在是空的,没有任何节点。这时候把链表的头指针start和尾指针curr都指向新节点nn,相当于初始化了链表。 - 如果链表已经有节点了,就执行:
curr->link = nn; curr = nn;curr一直指向当前链表的最后一个节点,把它的link指向新节点,就把新节点接在了链表末尾;然后把curr更新为新节点,这样下次插入时,curr还是指向最后一个节点。
这种每次把新节点加到链表最后的方式,叫做尾插法。
内容的提问来源于stack exchange,提问作者Adyan
相关产品推荐
相关产品推荐

