/*链表练习*/
#include <stdio.h>
#include <stdlib.h> //提供malloc()原型
#include <string.h> //提供strcpy()原型
#define TSIZE 45
struct film
{
char title[TSIZE];
int rating;
film *next;
}; //忘记这个分号会死的很惨
int main()
{
struct film *head = NULL;
struct film *prev = NULL, *current = NULL;
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);
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); // free 之后, 索引不到 ->next
current = current->next;
*/
prev = current ->next;
free( current );
current = prev;
}
printf("BYE BYE");
return 0;
}
|