intmain() { structfilm * head =NULL;//头指针 structfilm * prev, *current;//前一个结构的指针,和当前结构的指针 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 you 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); head = current->next;//(更新),让当前指针指向下个结构 } printf("Bye!\n");