C语言-----链表1(代码附注释)

构造一个链表,记录电影名字,评价(0~10分的评分),将链表中的内容依次输出.

代码: 

#include <stdio.h>
#include <stdlib.h> //调用malloc()函数 free()函数
#include <string.h> //调用gets()函数,getchar()函数
#define TSIZE 45
//链表创建  值域+指针域
struct film{
    char title[TSIZE];    //电影标题
	int rating;           //评价0~10
	struct film * next;
};

int main()
{
    struct film *head = NULL;  //定义一个头指针,指向个空指针不然容易成为野指针
	struct film *prev,*current; //定义指针变量
	char input[TSIZE]; 

	puts("输入电影名: ");
	while( gets(input) != NULL && input[0] != '0' ) //gets()函数返回的是一个指针
	{
	   current = (struct film *)malloc(sizeof(struct film)); //包含头文件stdlib.h
	   if(head == NULL)
	     head = current;//头指针为空时,指向当前指针
	   else
	     prev -> next = current; // prev = current 注意结合33行代码理解
	   current -> next = NULL; //当前链表的指针域指向空
	   strcpy(current -> title,input); //地址操作
	   puts("输入你的电影评价 <0~10>: ");
	   scanf("%d",¤t -> rating); //
	   while(getchar() != '\n')
	      continue;
	   puts("输入下一个电影名 (空格结束): ");
	   prev = current;
	}  //构造单链表
	
	if(head == NULL)   
	  printf("没有数据输入.");
	else
	  printf("电影名: \n");
	  
	current = head;//头指针不为空时,指针变量current指向头指针
	
	while(current != NULL)
	{
	    printf("电影名: %s 评价: %d\n",current -> title,current -> rating);
		current = current -> next; //当前链表的指针指向current变量指向下一个链表
	}
	
	//释放构造的链表的空间
	current = head;
	
	while(current != NULL)
	{
	    free(current);
		current = current -> next;  //链表传递依次释放指针
	}
	printf("Bye!\n");
	
	return 0;
}
初学链表要搞清楚变量的赋值的意义,每个步骤的意思要理解清楚.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值