学习链表的创建和显示z

/*film2.c--使用结构链表*/
#include<stdio.h>                  
#include<stdlib.h>                /*提供malloc()原型*/
#include<string.h>                /*提供strcpy()原型*/
#define TSIZE 45                  /*储存片名的数组大小*/
struct film
{
char title[TSIZE];
int rating;
struct film *next;            //指向链表中的下一个结构
};
char * s_gets(char * st,int n);
int main(void)
{
struct film * head = NULL;
struct film * prev, *crrent;
char input(TSIZE);

/*收集并储存信息*/

puts("Enter first movie title:");
while(s_gets(input,TSIZE) != 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",&current -> 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->rating);
    current = current->next;
}
/*完成任务,释放已分配内存*/
 current = head;
 while(current != NULL)
 {
current = head;
head = current -> next;
free(current);
}
 printf("Bye !\n");
 return 0;
}
char * s_gets(char * st,int n)
{
char * ret_val;
char * find;
ret_val = fgets(st, n, stdin);
if(ret_val)
{
find = strchr(st, '\n');             //查找换行符
if(find)                            //如果地址不是NULL
*find = '\0';                   //在此处放置一个空字符
else 
while (getchar() != '\n')
continue;                   //处理剩余输入行
}
return ret_val;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值