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