c-单链表

本文介绍了如何生成和打印单链表,强调在生成链表时`head`始终指向首元素,`prev`保存最后一个元素的引用。在遍历时,需从头指针开始,逐个节点输出。插入操作涉及`malloc`分配内存,并更新指针关系。
摘要由CSDN通过智能技术生成

单链表的生成和打印

链表的生成

今天刚想明白了链表的prev/current为什么这么用,写文章记录一下

 43         current = (struct film *)malloc(sizeof(struct film));
 44         if (head == NULL) {
 45             head = current;
 46         }
 47         else {
 48             prev->next = current;                                                                                         
 49         }
 50         current->next = NULL;
 51         strcpy(current->title, input);
 52         printf("enter your rating : ");
 53         scanf("%d", &current->rating);

在这段代码中,我们通过如下过程不断生成链表。

head == NULL
head/current
head -> current/0
head -> current/0
head -> current/0 -> NULL
head -> current/prev/0 -> NULL
head -> prev/0 -> current -> NULL
head -> 0 -> prev/current -> NULL
....

head->next一直指向第一个元素,而prev一直是最后一个元素,如果进行插入操作,每次对current进行malloc。

而在打印时,需要定义一个新指针指向头指针,再进行输出,而不能直接使用头指针进行遍历,要不就会变成野表(不知道头在哪里,而且单链表是单向的,不知道父节点是哪个)

链表的遍历

struct film *getprint;
getprint = head;
while (getprint != NULL) {
	printf("Movie %s Rating %d\n", getprint->title, getprint->rating);
	getprint = getprint->next;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值