鱼C论坛

 找回密码
 立即注册
查看: 3322|回复: 0

[学习笔记] 输入若干个正整数(输入-1为结束标志),要求按输入数据的逆序建立单链表并输出。

[复制链接]
发表于 2021-5-18 18:13:22 | 显示全部楼层 |阅读模式

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

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

x
  1. /*

  2. 开发者:慢蜗牛 开发时间:2020.6.11

  3. 程序功能:逆序建立链表,顺序输出

  4. */

  5. #include<stdio.h>
  6. #include<malloc.h>
  7. #define LEN sizeof(struct once)

  8. struct once//建立结构
  9. {
  10. int a;

  11. struct once* next;
  12. };

  13. struct once* out()//建立头插法逆序建立链表
  14. {
  15. int n = 0;

  16. struct once* p1, * p2;

  17. printf("请输入:");

  18. p1 = p2 = (struct once*)malloc(LEN);

  19. scanf_s("%d", &p1->a);

  20. p2->next = NULL;

  21. while (p1->a != -1)
  22. {
  23.     if (n == 0) p1->next = p2->next;

  24.     else p1->next = p2;

  25.     p2 = p1;

  26.     p1 = (struct once*)malloc(LEN);

  27.     scanf_s("%d", &p1->a);

  28.     n = n + 1;
  29. }
  30. return(p2);
  31. }

  32. void print(struct once* head)//输出链表
  33. {

  34. struct once* p1, * p2, * p3, * p;

  35. p3 = p1 = p2 = (struct once*)malloc(LEN);

  36. p1->next = head; head = p1;

  37. p1 = head->next;

  38. do//反转
  39. {
  40.     p3 = head->next; p2 = p1->next;

  41.     head->next = p2; p1->next = p2->next;

  42.     p2->next = p3;
  43. } while (p1->next != NULL);

  44. p = head->next;

  45. do//输出头节点链表
  46. {
  47.     printf("--%d", p->a);

  48.     p = p->next;

  49. } while (p != NULL);
  50. }

  51. void main()//调用函数
  52. {

  53. struct once* head;

  54. head = out();

  55. print(head);

  56. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 13:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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