数据结构——线性表之顺序表

线性表的顺序存储实现
利用数组的连续存储空间顺序存放线性表的各元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAXSIZE 100
#define ERROR -1

typedef int ElementType;
typedef int Position;
typedef struct LNode *List;
struct LNode
{
ElementType Data[MAXSIZE];
Position Last;
};

// 初始化
List MakeEmpty()
{
List L;
L = (List)malloc(sizeof(struct LNode));
L->Last = -1;
return L;
}

// 查找
Position Find(List L, ElementType X)
{
Position i = 0;
while(i <= L->Last && L->Data[i] != X)
{
i++;
}
if(i > L->Last)
{
return ERROR;
}
else
{
return i;
}
}

// 插入
bool Insert(List L, ElementType X, Position P)
{// 在L的指定位置P前插入一个新元素X
Position i;
if(L->Last == MAXSIZE - 1)
{
printf("表满");
return false;
}
if(P < 0 || P > L->Last + 1)
{
printf("位置不合法");
return false;
}
for(i = L->Last; i >= P; i--)
{
L->Data[i + 1] = L->Data[i];
}
L->Data[P] = X;
L->Last++;
return true;
}

// 删除
bool Delete(List L, Position P)
{// 从L中删除指定位置P的元素
Position i;
if(P < 0 || P > L->Last)
{
printf("位置%d不存在元素", P);
return false;
}
for(i = P + 1; i <= L->Last; i++)
{
L->Data[i - 1] = L->Data[i];
}
L->Last--;
return true;
}

int main()
{
List L = MakeEmpty();
int i;
for(i = 0; i < 50; i++)
{
Insert(L, i, i);
}
printf("查找元素49的位置:%d\n", Find(L, 49));
Delete(L, 49);
printf("查找元素49的位置:%d\n", Find(L, 49));

return 0;
}
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2020-2021 zhangguoliu
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信