|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码 |
|