您的位置:首页 > 其它

使用结构指针实现链表

2014-11-21 14:34 288 查看
模拟的是一个使用结构链表(而不是数组)来存放电影信息

#include<stdio.h>
#include<stdlib.h>// 提供malloc、free等函数原型
#include<string.h>// 提供strcpy等函数原型
#define TSIZE 45// 存放电影名的数组大小
struct film{
char title[TSIZE];// 电影的名字
intrating;// 对电影的评分
struct film *next;// 指向链表的下一个结构
};
int main(void){
struct film *head = NULL;
struct film *prev,*current;
char input[TSIZE];
// 收集并存储信息
puts("Enter first movie title:");
while(gets(input) != NULL && input[0] !='\0'){
current = (struct film*)malloc(sizeof(struct film));
if(head == NULL){// 第一个结构体指针
head = current;
}else{// 后续结构
prev->next = current;
}
current->next = NULL;
strcpy(current->title,input);
puts("Enter your rating<0~10>");
scanf("%d",¤t->rating);
while(getchar() !='\n'){
continue;
}
puts("Enter next movie title(empty line to stop):");
prev = current;
}
// 输出存储的电影列表
if(head == NULL){
printf("NO data entered");
}else{
printf("Here is the movie list:\n");
}
current = head;
while(current != NULL){
printf("Movie:%s Rating:%d\n",current->title,current->rating);
current = current->next;
}
// 任务已经完成,因此释放所分配的内存
current = head;
while(current != NULL){
free(current);
current = current->next;
}
printf("Bye!\n");
return 0;
}
运行程序,输入看过的电影的电影名和评分,在提示
Enter next movie title(empty line to stop):

后输入回车以跳出最外层的while循环

程序负责打印用户输入的信息,并释放相应的内存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐