歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言單鏈表逆置

C語言單鏈表逆置

日期:2017/3/1 10:09:02   编辑:Linux編程

實現單鏈表的逆置。

效果圖:

多的就不說了。代碼如下:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct node {
  4. int data;
  5. struct node *next;
  6. }Node;
  7. //創建鏈表
  8. Node *CreatList(void)
  9. {
  10. int val, i, n;
  11. Node *phead, *p, *q;
  12. phead = NULL;
  13. printf("請輸入您要建立的鏈表長度:\n");
  14. scanf("%d", &n);
  15. printf("請輸入您要輸入的數據:\n");
  16. for(i=0; i<n; ++i)
  17. {
  18. scanf("%d", &val);
  19. p = (Node *)malloc(sizeof(Node));
  20. p->data = val;
  21. if(NULL == phead)
  22. q = phead = p;
  23. else
  24. q->next = p;
  25. q = p;
  26. }
  27. p->next = NULL;
  28. return phead;
  29. }
  30. //鏈表的逆置
  31. Node *ReverseList(Node *phead)
  32. {
  33. Node *p, *q, *r;
  34. p = phead;
  35. q=r=NULL;
  36. while(p)
  37. {
  38. q = p->next;
  39. p->next = r;
  40. r = p;
  41. p = q;
  42. }
  43. return r;
  44. }
  45. //輸出鏈表
  46. void ShowList(Node *phead)
  47. {
  48. Node *p;
  49. p = phead;
  50. while(p)
  51. {
  52. printf("%d ", p->data);
  53. p = p->next;
  54. }
  55. printf("\n");
  56. }
  57. int main(void)
  58. {
  59. Node *phead;
  60. phead = CreatList();
  61. printf("鏈表逆置前的數據:\n");
  62. ShowList(phead);
  63. phead = ReverseList(phead);
  64. printf("鏈表逆置後的數據:\n");
  65. ShowList(phead);
  66. return 0;
  67. }
Copyright © Linux教程網 All Rights Reserved