鱼C论坛

 找回密码
 立即注册
查看: 1536|回复: 2

[已解决]链表遍历的问题...求帮助

[复制链接]
发表于 2017-9-5 12:40:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. # include <stdio.h>
  2. # include <malloc.h>
  3. # include <stdlib.h>
  4. # include <string.h>

  5. struct NoDe
  6. {
  7.         int sorce;
  8.         char * name;
  9.         struct NoDe * pNext;
  10. };
  11. typedef struct NoDe NODE, *PNODE;

  12. PNODE CreatList(void);
  13. void TraversalList(PNODE);

  14. int main(void)
  15. {
  16.         PNODE pHead;

  17.         pHead = CreatList();
  18.         TraversalList(pHead);

  19.         return 0;
  20. }

  21. PNODE CreatList(void)
  22. {
  23.         int score, len, i;
  24.         char name[10];
  25.         PNODE pHead = NULL;
  26.         PNODE pNew = NULL;
  27.         pHead = (PNODE)malloc(sizeof(NODE));
  28.         PNODE pTail = pHead;

  29.         printf("需要创建的节点个数:");
  30.         scanf_s("%d", &len);
  31.         for (i = 0; i < len; ++i)
  32.         {
  33.                 pNew = (PNODE)malloc(sizeof(NODE));
  34.                 if (NULL == pNew)
  35.                 {
  36.                         printf("内存分配失败");
  37.                         exit(-1);
  38.                 }

  39.                 printf("请输入每个节点的信息,成绩:");
  40.                 scanf_s("%d", &score);
  41.                 printf("姓名:");
  42.                 getchar();
  43.                 gets_s(name, 10);

  44.                 pNew->sorce = score;
  45.                 pNew->name = name;

  46.                 pTail->pNext = pNew;
  47.                 pNew->pNext = NULL;
  48.                 pTail = pNew;
  49.         }
  50.         return pHead;
  51. }
  52. void TraversalList(PNODE pHead)
  53. {
  54.         PNODE p = pHead->pNext;
  55.         while (NULL != p)
  56.         {
  57.                 printf("成绩为:%5d, 姓名为%s", p->sorce, p->name);
  58.                 p = p->pNext;
  59.         }
  60. }
复制代码


遍历时数据域中的name会丢掉..不知怎么回事= =!求帮助
最佳答案
2017-9-5 13:33:43
2017-09-05_133318.png

  1. #include <stdio.h>
  2. #include <malloc.h>
  3. #include <stdlib.h>
  4. #include <string.h>

  5. struct NoDe
  6. {
  7.         int sorce;
  8.         char name[10];
  9.         struct NoDe * pNext;
  10. };
  11. typedef struct NoDe NODE, *PNODE;

  12. PNODE CreatList(void);
  13. void TraversalList(PNODE);

  14. int main(void)
  15. {
  16.         PNODE pHead;

  17.         pHead = CreatList();
  18.         TraversalList(pHead);

  19.         return 0;
  20. }

  21. PNODE CreatList(void)
  22. {
  23.         int score, len, i;
  24.         char name[10];
  25.         PNODE pHead = NULL;
  26.         PNODE pNew = NULL;
  27.         
  28.         PNODE pTail = NULL;

  29.         pHead = (PNODE)malloc(sizeof(NODE));
  30.         pTail = pHead;

  31.         printf("需要创建的节点个数:");
  32.         scanf("%d", &len);
  33.         for (i = 0; i < len; ++i)
  34.         {
  35.                 pNew = (PNODE)malloc(sizeof(NODE));
  36.                 if (NULL == pNew)
  37.                 {
  38.                         printf("内存分配失败");
  39.                         exit(-1);
  40.                 }

  41.                 printf("请输入每个节点的信息,成绩:");
  42.                 scanf("%d", &score);
  43.                 printf("姓名:");
  44.                 getchar();
  45.                 gets(name);

  46.                 pNew->sorce = score;
  47.                 strcpy(pNew->name, name);

  48.                 pTail->pNext = pNew;
  49.                 pNew->pNext = NULL;
  50.                 pTail = pNew;
  51.         }
  52.         return pHead;
  53. }
  54. void TraversalList(PNODE pHead)
  55. {
  56.         PNODE p = pHead->pNext;
  57.         while (NULL != p)
  58.         {
  59.                 printf("成绩为:%5d, 姓名为%s", p->sorce, p->name);
  60.                 p = p->pNext;
  61.         }
  62. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-5 13:33:43 | 显示全部楼层    本楼为最佳答案   
2017-09-05_133318.png

  1. #include <stdio.h>
  2. #include <malloc.h>
  3. #include <stdlib.h>
  4. #include <string.h>

  5. struct NoDe
  6. {
  7.         int sorce;
  8.         char name[10];
  9.         struct NoDe * pNext;
  10. };
  11. typedef struct NoDe NODE, *PNODE;

  12. PNODE CreatList(void);
  13. void TraversalList(PNODE);

  14. int main(void)
  15. {
  16.         PNODE pHead;

  17.         pHead = CreatList();
  18.         TraversalList(pHead);

  19.         return 0;
  20. }

  21. PNODE CreatList(void)
  22. {
  23.         int score, len, i;
  24.         char name[10];
  25.         PNODE pHead = NULL;
  26.         PNODE pNew = NULL;
  27.         
  28.         PNODE pTail = NULL;

  29.         pHead = (PNODE)malloc(sizeof(NODE));
  30.         pTail = pHead;

  31.         printf("需要创建的节点个数:");
  32.         scanf("%d", &len);
  33.         for (i = 0; i < len; ++i)
  34.         {
  35.                 pNew = (PNODE)malloc(sizeof(NODE));
  36.                 if (NULL == pNew)
  37.                 {
  38.                         printf("内存分配失败");
  39.                         exit(-1);
  40.                 }

  41.                 printf("请输入每个节点的信息,成绩:");
  42.                 scanf("%d", &score);
  43.                 printf("姓名:");
  44.                 getchar();
  45.                 gets(name);

  46.                 pNew->sorce = score;
  47.                 strcpy(pNew->name, name);

  48.                 pTail->pNext = pNew;
  49.                 pNew->pNext = NULL;
  50.                 pTail = pNew;
  51.         }
  52.         return pHead;
  53. }
  54. void TraversalList(PNODE pHead)
  55. {
  56.         PNODE p = pHead->pNext;
  57.         while (NULL != p)
  58.         {
  59.                 printf("成绩为:%5d, 姓名为%s", p->sorce, p->name);
  60.                 p = p->pNext;
  61.         }
  62. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-5 15:21:50 | 显示全部楼层

毛病找着了~谢谢老铁
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 15:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表