c语言程序设计 浙大翁凯版视频14.2-2链表细解

本文作者在学习链表时,通过编写带注释的C语言代码来加深理解,并分享给读者。代码基于翁凯教授的模板,介绍了如何创建和挂载链表节点,以及如何找到链表的末尾进行节点添加。文章还附有相关视频课程链接供进一步学习。
摘要由CSDN通过智能技术生成
#前言
代码细解是因为本人在学习链表时是在痛苦,想着边码代码,边给代码写详细注释用以更好的理解,现在分享出来给小伙伴们分享。
只是自己的一点愚见,希望能对大家有帮助,也欢迎大家指导指正。代码是以翁凯教授的代码为模版的。建议大家拷贝下来到编译器上阅读。
视频课程在这:https://www.bilibili.com/video/BV1Ls411w7rx?p=127&spm_id_from=pageDriver&vd_source=e911108f66bebd2ddd1258ae7d096ed8

#include “test.h”
#include “stdbool.h”
#include “stdlib.h”
#include “string.h”
typedef struct _node{
int value;
struct _node next;
}Node; // 此处创建链表的节点结构
next指向一个struct _node的变量
// 链表在创建时,创建节点没有像一般的结构,取一个名字,只是分配了一个地址,也只是需要一个地址,不需要名字。
int main(int argc, const char * argv[]){
int number;
Node * head = NULL; //从用处来看,head指针只是用于指向第一个创建好的节点,倒像是场外指导的裁判一样。
do {
scanf(“%d”,number);
if (number != 1){
Node p = (Node )malloc(sizeof(Node)); / 用malloc分配一个区域,同时创建一个Node类型的变量
该变量没有名字,只有一个地址被存放在指针变量p中,p指向一个无名Node变量
/
p -> value = number;
p -> next = NULL;
Node last = head;/ 创建一个暂时还没有指向具体Node变量的指针,赋值与head一样为null*/
//此处last的性质与head类似,类似于场外指导的变量,用于下文中遍历寻找链表中的最后一个节点。
if (last){ // 如果last此时不为null,则说明已经创建或挂载好了至少一个节点,即last中有一个地址,则进入if
while (last ->next) //如果last指向一个Node变量,即指向一个节点,且该节点的next不为null,且指向一个地址,则进入循环,该循环作用为,遍历已挂载节点的所有next部分,从而找到最后一个节点,也就是next为null的节点
{
last = last ->next; //因为节点本身指向下一个节点,所以只需将当前节点的的next赋值给last
}
last -> next = p;} //此时last指向链表的最后一个节点,此时的节点next为null,将上述新创建好的p节点指针变量赋值给next,从而实现挂载
else {head = p;} //如果此时的head指向是为null的,那么说明还没有完成第一个节点的创建,则将刚刚创建好的节点的p指针变量赋值给head,使得head指针指向第一个变量。
}
}while (number!=-1); //节点创建结束,停止循环
return 0;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值