1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. //list definition
  5. typedef struct Node
  6. {
  7. int data;
  8. struct Node *next;
  9. }Node, *Linkedlist;
  10. //list initialization
  11. Linkedlist listInit()
  12. {
  13. Node *L;
  14. L = (Node *)malloc(sizeof(Node));
  15. if(L == NULL)
  16. {
  17. printf("List initialization failed");
  18. exit(0);
  19. }
  20. L->next = NULL;
  21. return L;
  22. }
  23. //list creation by Head_Insert
  24. Linkedlist listCreatH(Linkedlist L, int n)
  25. {
  26. int x;
  27. for(int i = 0; i < n; i++)
  28. {
  29. scanf("%d", &x);
  30. Node *p = (Node *)malloc(sizeof(Node));
  31. p->data = x;
  32. p->next = L->next;
  33. L->next = p;
  34. }
  35. return L;
  36. }
  37. Linkedlist listInsert(Linkedlist L, int rank, int x)
  38. {
  39. Node *p = L;
  40. for(int i = 1; i < rank; i++) p = p->next;
  41. if(p == NULL)
  42. {
  43. printf("insert fail\n");
  44. return 0;
  45. }
  46. Node *s = (Node *)malloc(sizeof(Node));
  47. s->data = x;
  48. s->next = p->next;
  49. p->next = s;
  50. printf("insert OK\n");
  51. return L;
  52. }
  53. Linkedlist listDelete(Linkedlist L, int rank)
  54. {
  55. if(L->next == NULL)
  56. {
  57. printf("delete fail\n");
  58. return 0;
  59. }
  60. Node *pre = L, *p;
  61. for(int i = 1; i < rank; i++) pre = pre->next;
  62. p = pre->next;
  63. pre->next = p->next;
  64. free(p);
  65. printf("delete OK\n");
  66. return L;
  67. }
  68. void listGet(Linkedlist L, int rank)
  69. {
  70. if(L->next == NULL)
  71. {
  72. printf("get fail\n");
  73. return;
  74. }
  75. Node *p = L;
  76. for(int i = 0; i < rank; i++) p = p->next;
  77. printf("%d\n", p->data);
  78. }
  79. void listShow(Linkedlist L)
  80. {
  81. Node *p = L->next;
  82. if(p == NULL) printf("Link list is empty\n");
  83. else
  84. {
  85. while(p)
  86. {
  87. printf("%d ", p->data);
  88. p = p->next;
  89. }
  90. printf("\n");
  91. }
  92. }
  93. int main ()
  94. {
  95. Node *L;
  96. L = listInit();
  97. int num, operate_num, rank, insert_value;
  98. scanf("%d", &num);
  99. L = listCreatH(L, num);
  100. scanf("%d", &operate_num);
  101. char operate_name[10];
  102. for(int i = 0; i < operate_num; i++)
  103. {
  104. scanf("%s", &operate_name);
  105. if(strcmp(operate_name, "get") == 0)
  106. {
  107. scanf("%d", &rank);
  108. listGet(L, rank);
  109. }
  110. else if(strcmp(operate_name, "insert") == 0)
  111. {
  112. scanf("%d %d", &rank, &insert_value);
  113. listInsert(L, rank, insert_value);
  114. }
  115. else if(strcmp(operate_name, "delete") == 0)
  116. {
  117. scanf("%d", &rank);
  118. listDelete(L, rank);
  119. }
  120. else if(strcmp(operate_name, "show") == 0)
  121. {
  122. listShow(L);
  123. }
  124. }
  125. return 0;
  126. }
点赞(0)
 

9.9 分

1 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论