创建单循环链表,出错了……
====================================程序描述====================================我创建了一个单向循环链表。我之前创建链表都是带头节点的。
突然来创建了一个不带头结点的单向链表
问题:能编译,编译完了执行之后,输入第三个字符串,敲下回车键。问题来了!
所以我想求助:怎么该对?
指针一复杂,我常常会把他们弄乱……
====================================源代码=====================================
程序代码:
#include <stdio.h> #include <string.h> #define _memory (list *)malloc(sizeof(list)) typedef struct list list; struct list { char str[20]; struct list *next; }; void creat_list(list *p); void show(list *p); int main() { list *head, *head_temp = head; creat_list(head); //创建循环链表 show(head_temp); //输出循环链表 return 0; } void creat_list(list *p) { list *h, *head = p; char temp[20]; p = _memory; printf("Please input a string:"); scanf("%s", p->str); p->next = NULL; printf("Please input a string:"); scanf("%s", temp); /**********问题主要是在这一块**********/ while (temp[0] != '@') { h = _memory; strcpy(p->str, temp); p->next = h; p = h->next; printf("Please input a string:"); scanf("%s", temp); } /**********问题主要是在这一块**********/ h->next = head; } void show(list *p) { list *temp = p; printf("%s\n", temp->str); temp = temp->next; while(temp != p) { printf("%s\n", temp->str); temp = temp->next; } }
===============================谢谢各位===================================