[关闭]
@yudesong 2017-06-24T14:28:41.000000Z 字数 851 阅读 576

线性表

线性表 @yudesong


线性表(a1,a2,…,an)有唯一的第一个和最后一个元素(n≥0)。其余的有唯一的前驱和后继。

顺序表定义:用一组地址连续的存储单元依次存放的数据元素。 在顺序表的第i个位置前插入一个数据元素,需要向后移动n - i +1个元素,删除第i个位置的元素需要向前移动n- i个元素。

特征:
1.集合中必存在唯一的一个“第一元素”;
2.集合中必存在唯一的一个 “最后元素” ;
3.除最后一个元素之外,均有 唯一的后继(后件);
4.除第一个元素之外,均有 唯一的前驱(前件)。

优缺点:
1. 优点:在于随机访问元素,
2. 缺点:插入和和删除的时候,需要移动大量的元素。

  1. #include <stdio.h>
  2. #include <malloc.h>
  3. typedef char ElemType;
  4. typedef struct
  5. {
  6. ElemType data[MAX_SIZE];
  7. int len;
  8. }SqList;
  9. //初始化顺序表
  10. void initList(SqList *&L)
  11. {
  12. L=(SqList *)malloc(sizeof(SqList));
  13. L->len=0;
  14. }
  15. //插入元素
  16. void insertList(SqList *&L,int i,ElemType e)
  17. {
  18. i--;
  19. int j;
  20. for(j=L->len;j>i;j--)
  21. L->data[j]=L->data[j-1];
  22. L->data[i]=e;
  23. L->len++;
  24. }
  25. //删除第i个位置的元素
  26. void deleteList(SqList *&L,int i)
  27. {
  28. i--;
  29. ElemType e=L->data[i];
  30. for(int j=i;j<L->len-1;j++)
  31. L->data[j]=L->data[j+1];
  32. L->len--;
  33. printf("%c",e);
  34. }
  35. //输出元素
  36. void disPlay(SqList *L)
  37. {
  38. int i;
  39. for(i=0;i<;L->len;i++)
  40. printf("%c ",L->data[i]);
  41. }
  42. //释放顺序表
  43. void freeList(SqList *L)
  44. {
  45. free(L);
  46. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注