创建单循环链表,出错了……
====================================程序描述====================================我创建了一个单向循环链表。我之前创建链表都是带头节点的。
突然来创建了一个不带头结点的单向链表
问题:能编译,编译完了执行之后,输入第三个字符串,敲下回车键。问题来了!
所以我想求助:怎么该对?
指针一复杂,我常常会把他们弄乱……
====================================源代码=====================================
程序代码:
#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;
}
}
===============================谢谢各位===================================









