Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3. typedef int ElemType;
  4. typedef struct node
  5. {
  6. ElemType data;
  7. struct node* next;
  8. }Slink, *LinkList;
  9. LinkList Create1() //尾插法
  10. {
  11. ElemType x;
  12. LinkList h, s, p;
  13. h = new Slink;
  14. h->next = NULL;
  15. p = h;
  16. cin >> x;
  17. while (x != -1)
  18. {
  19. s = new Slink;
  20. s->data = x;
  21. p->next = s;
  22. p = s;
  23. cin >> x;
  24. }
  25. p->next = NULL;
  26. return h;
  27. }
  28. LinkList Create2() //头插法
  29. {
  30. ElemType x;
  31. LinkList h, s;
  32. h = new Slink;
  33. h->next = NULL;
  34. cin >> x;
  35. while (x != -1)
  36. {
  37. s = new Slink;
  38. s->data = x;
  39. s->next = h->next;
  40. h->next = s;
  41. cin >> x;
  42. }
  43. return h;
  44. }
  45. void Printer(LinkList head) //打印输出
  46. {
  47. LinkList p;
  48. p = head->next;
  49. while (p != NULL)
  50. {
  51. cout << p->data << ' ';
  52. p = p->next;
  53. }
  54. }
  55. int Listlength(LinkList h) //计数
  56. {
  57. LinkList p;
  58. p = h;
  59. int j = 0;
  60. while (p->next != NULL) //若链表截止,停止计数
  61. {
  62. p = p->next;
  63. j++;
  64. }
  65. return j;
  66. }
  67. LinkList Get(LinkList h, int i) //按序号查找
  68. {
  69. int m;
  70. m = Listlength(h);
  71. LinkList p;
  72. p = h;
  73. int j = 0;
  74. if (i<1 || i>m)
  75. return NULL;
  76. while (j < i)
  77. {
  78. p = p->next;
  79. j++;
  80. }
  81. return p;
  82. }
  83. int Locate(LinkList h, ElemType e) //按值查找
  84. {
  85. LinkList p;
  86. int j = 1;
  87. p = h->next;
  88. while (p != NULL)
  89. {
  90. if (p->data == e)
  91. break;
  92. else
  93. {
  94. p = p->next;
  95. j++;
  96. }
  97. }
  98. if (p == NULL)
  99. return 0;
  100. else
  101. return j;
  102. }
  103. int InsList(LinkList h, int i, ElemType e) //插入
  104. {
  105. LinkList pre, s;
  106. int j = 0;
  107. pre = h;
  108. int m = Listlength(h);
  109. if (i<1 || i>m + 1)
  110. {
  111. cout << "插入位置不合法" << endl;
  112. return 0;
  113. }
  114. while (j < i - 1)
  115. {
  116. pre = pre->next;
  117. j++;
  118. }
  119. s = new Slink;
  120. s->data = e;
  121. s->next = pre->next;
  122. pre->next = s;
  123. return 1;
  124. }
  125. int DelList(LinkList h, int i, ElemType* e) //删除(按位置删除)
  126. {
  127. LinkList pre, r;
  128. pre = h;
  129. int m = Listlength(h);
  130. int j = 0;
  131. if (i<1 || i>m)
  132. {
  133. cout << "删除位置不合法" << endl;
  134. return 0;
  135. }
  136. while (j < i - 1)
  137. {
  138. pre = pre->next;
  139. j++;
  140. }
  141. r = pre->next;
  142. pre->next = pre->next->next;
  143. *e = r->data;
  144. free(r);
  145. return 1;
  146. }
  147. int main()
  148. {
  149. LinkList head;
  150. int i;
  151. cout << "请输入的学生成绩,以-1为停止标志:" << endl;
  152. head = Create1();
  153. cout << "你输入的学生成绩个数为:" << endl;
  154. cout << "Listlength(head)" << endl;
  155. cout << "请输入你要查找的成绩的位置:" << endl;
  156. cin >> i;
  157. cout << "他/她成绩为:" << endl;
  158. cout << Locate(head, i) << endl;
  159. cout << "请输入你要删除的成绩的位置:" << endl;
  160. cin >> i;
  161. cout << "你要删除的位置的成绩:" << endl;
  162. cout << "30 刘炘威" << endl;
  163. return 0;
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement