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

来源:互联网 发布:ubuntu启动搜狗输入法 编辑:程序博客网 时间:2024/04/27 14:42

构造一个链表,记录电影名字,评价(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~10struct 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 0
原创粉丝点击