当前位置:   article > 正文

耿国华数据结构(C语言)【单链表逆置】

耿国华数据结构(C语言)【单链表逆置】
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. typedef int ElemType;
  4. typedef struct node
  5. {
  6. ElemType data;
  7. struct node *next;
  8. }Node,*LinkList;
  9. LinkList createFromTail();
  10. void printLinkList(LinkList L);
  11. void reverseLinkList(LinkList L);
  12. int main()
  13. {
  14. LinkList L;
  15. L=createFromTail();
  16. printf("\nAfter create,the list is:\n");
  17. printLinkList(L);
  18. reverseLinkList(L);
  19. printf("\nAfter Reverse,the list is:\n");
  20. printLinkList(L);
  21. return 1;
  22. }
  23. //用尾插法建立一个带头结点的单链表
  24. LinkList createFromTail()
  25. {
  26. LinkList L;
  27. Node *r, *s;
  28. int flag =1;
  29. int d;
  30. L=(Node * )malloc(sizeof(Node));
  31. //该结点为头结点
  32. L->next=NULL;
  33. r=L;
  34. printf("Input int one by one,-1 to end:\n");
  35. while(flag)
  36. {
  37. scanf("%d",&d);
  38. if(c!=-1)
  39. {
  40. s=(Node*)malloc(sizeof(Node));
  41. s->data=c;
  42. r->next=s;
  43. r=s;
  44. }
  45. else
  46. {
  47. flag=0;
  48. r->next=NULL;
  49. }
  50. }
  51. return L;
  52. }
  53. void printLinkList(LinkList L)
  54. {
  55. Node *p;
  56. p=L->next;
  57. while(p!=NULL)
  58. {
  59. printf("%d ",p->data);
  60. p=p->next;
  61. }
  62. }
  63. void reverseLinkList(LinkList L)
  64. {
  65. Node *p=L->next,*q;
  66. /* P为原链表的当前处理结点*/
  67. L->next=NULL;
  68. while(p!=NULL)
  69. { q=p->next;
  70. p->next=L->next;
  71. L->next=p;
  72. p=q;
  73. }
  74. }

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

闽ICP备14008679号