当前位置:   article > 正文

day2数据结构

day2数据结构

链表的插入

循环链表,判断循环链表是否为空 指向的是自己

仅设表尾指针的循环链表合并

代码举例

删除线性表的最小值,并由函数返回删除的值,空的位置,由最后一个元素填补,若表为空显示出错信息

&L 因为L会发生变化 & 引用

在 C 语言中,参数传递不支持引用(&)的方式,应该使用指针来传递参数

ElemType Del_Min(SqList *L)

数组的赋值不能使用 = 直接赋值整个数组。需要逐个赋值数组的元素,或者使用循环来初始化数组

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MaxSize 10
  4. #define ElemType int
  5. //定义线性表的最大长度
  6. typedef struct{
  7. ElemType data[MaxSize];
  8. int length;
  9. }SqList;
  10. ElemType Del_Min(SqList *L){
  11. ElemType value;
  12. if(L->length == 0)
  13. return -1;
  14. value = L->data[0];
  15. int pos = 0;
  16. for(int i = 1; i < L->length; i++){
  17. if(L->data[i] < value){
  18. pos = i;
  19. value = L->data[i];
  20. }
  21. }
  22. L->data[pos] = L->data[L->length - 1];
  23. L->length--;
  24. return value;
  25. }
  26. int main()
  27. {
  28. SqList L;
  29. int arr[] = {5, 2, 3, 4, 1};
  30. for(int i = 0; i < 5; i++){
  31. L.data[i] = arr[i];
  32. }
  33. L.length = 5;
  34. ElemType a = Del_Min(&L);
  35. printf("%d\n", a);
  36. printf("Hello world!\n");
  37. return 0;
  38. }

使用头插法建立单链表的代码实现

第二步中L->next为空 L->next相当于链表的尾指针 最后一个结点(我认为)

c++写的

习题

访问L.data[i] 和 L.data[i-1]

c选项,删除第一个元素 后面要往前移

插入和删除都是O(n),插入和删除元素时需要移动其他元素来保持顺序表的连续性

排序为O(n^2)或者O(n log n)快排

第三题 平均移动的元素个数

修改就是查找的功能 用顺序表

存储密度

选n  第一个表的所有元素 都小于 第二个表的第一个元素

需要移动 i , i+1, ... n

线性表的 直接前驱和直接后继

时间复杂度

c选项的第三个 ,是p->next就是p和q后面的那个,修改它的前驱指向q

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

闽ICP备14008679号