马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这是我模仿小甲鱼在C语言课程里写的单链表代码,前几步还好好的,只要执行到打印部分,程序就没有反应了。
我现在怀疑是不是数据没有录入链表当中,但我实在检查不出来是哪一步错了,请大佬指点迷津!!!#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}Node;
typedef struct Node *LinkList;
void CreateListHead(LinkList *L);
void ShowList(LinkList L);
void getInput(LinkList L);
void getInput(LinkList L)
{
printf("请输入一个整数:");
scanf("%d", &L->data);
}
void CreateListHead(LinkList *L)
{
LinkList p, q;
p = (LinkList)malloc(sizeof(Node));
if(p == NULL)
{
printf("内存分配失败!\n");
exit(EXIT_FAILURE);
}
getInput(p);
//不带头节点的头指针在头指针非空的情况下如何处理:
if(*L != NULL)
{
q = *L;
*L = p;
p->next = q;
}
else
{
*L = p;
p->next = NULL;
}
}
void ShowList(LinkList L)
{
LinkList p;
p = L;
while(p != NULL)
{
printf("%d\n", p->data);
p = p->next;
}
}
int main(void)
{
LinkList L = NULL;
int ch;
while(1)
{
printf("请问是否需要录入信息(Y/N):");
do
{
ch = getchar();
}while(ch != 'Y' && ch != 'N');
if(ch == 'Y')
{
//修改头指针,所以传递头指针的地址
//即使是传地址,函数那边的参数是一个指向library指针的指针,所以要用二级指针,只是同名。
CreateListHead(&L);
}
else
{
break;
}
}
printf("请问是否需要打印信息(Y/N):");
do
{
ch = getchar();
}while(ch != 'Y' || ch != 'N');
if(ch == 'Y')
{
ShowList(L);
}
return 0;
}
|