当前位置:   article > 正文

C++ ——实现链表反转逆序_逆序链表c++

逆序链表c++

    在B站上学习C++服务器开发,第一节课结束的时候老师布置了一个小作业——实现链表逆序

    好久没有接触C++了,大一的时候学过,到了大三忘的差不多了,所以想重新学学。接触过Java和python之后回过来看C++,感觉c++好麻烦。


实现链表逆序,首先要有一个链表,下面是链表的结构体:

  1. typedef struct listnode {
  2. int data;
  3. struct listnode* next;
  4. }listnode , *list;

实现思路:

  1. 若链表为空或只有一个元素,则直接返回;

  2. 设置两个前后相邻的指针p,q. 将p所指向的节点作为q指向节点的后继;

  3. 重复2,直到q==NULL

  4. 调整链表头和链表尾

示例:以逆序1->2->3->4为例,图示如下


完整实现代码:

  1. #include<iostream>
  2. using namespace std;
  3. typedef struct listnode {
  4. int data;
  5. struct listnode* next;
  6. }listnode , *list;
  7. void print(list head);
  8. list reverse(list head);
  9. list fill(list head); //默认用1-10填充链表
  10. int main()
  11. {
  12. //初始化链表头节点
  13. listnode* head;
  14. head = (listnode*)malloc(sizeof(listnode));
  15. head->next = NULL;
  16. head->data = -1;
  17. list linklist = fill(head);
  18. print(head);
  19. reverse(head);
  20. print(head);
  21. getchar();
  22. return 0;
  23. }
  24. list reverse(list head)
  25. {
  26. if (head->next == NULL || head->next->next == NULL)
  27. {
  28. return head; /*链表为空或只有一个元素则直接返回*/
  29. }
  30. list t = NULL;
  31. list p = head->next;
  32. list q = head->next->next;
  33. while (q != NULL)
  34. {
  35. t = q->next;
  36. q->next = p;
  37. p = q;
  38. q = t;
  39. }
  40. /*此时q指向原始链表最后一个元素,也是逆转后的链表的表头元素*/
  41. head->next->next = NULL; /*设置链表尾*/
  42. head->next = p; /*调整链表头*/
  43. return head;
  44. }
  45. list fill(list head)
  46. {
  47. listnode *p, *q;
  48. p = head;
  49. for (int i = 0; i < 10; i++)
  50. {
  51. q = (listnode*)malloc(sizeof(listnode));
  52. q->data = i + 1;
  53. q->next = NULL;
  54. p->next = q;
  55. p = q;
  56. }
  57. return head;
  58. }
  59. void print(list head)
  60. {
  61. list p;
  62. p = head->next;
  63. while(p != NULL)
  64. {
  65. cout << p->data << " ";
  66. p = p->next;
  67. }
  68. cout << endl;
  69. }

执行结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/信息技术墨韵书生/article/detail/62851
推荐阅读
相关标签
  

闽ICP备14008679号