目录
算法-线性表之顺序表
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119

#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERR 0
#define MAXSIZE 100
//定义顺序存储结构
typedef struct list{
int elem[MAXSIZE];
int last;
}SeqList;

//初始化线性表
SeqList *InitList()
{
SeqList *L;
L = (SeqList *)malloc(sizeof(SeqList));
L->last = 0;
return L;
}

//查找操作,按内容查找
int Locate(SeqList *L,int e)
{
int i=0;
for (i;i<L->last-1;i++)
{
if (L->elem[i]==e)
{
return i+1;
}
}
return -1;
}

//插入操作.在表的第i个位置前插入一个新元素

int InsList(SeqList *L,int i,int e)
{
int k;
if (i<1||i>L->last+1)
{
printf("插入位置不合法!");
return ERR;
}
if (L->last>=MAXSIZE)
{
printf("表已满,无法插入!");
return ERR;
}

for (k=L->last-1;k>=i;k--)
{
L->elem[k+1]=L->elem[k];
}
L->elem[i-1]=e;
L->last++;
return OK;
}

//删除表的第i个元素,并且用指针e返回其值
int DelList(SeqList *L,int i,int *e)
{
int k;
if (i<1||i>L->last)
{
printf("删除位置不合法!");
return ERR;
}
*e=L->elem[i-1];
for (k=i-1;k<L->last;k++)
{
L->elem[k]=L->elem[k+1];
}
L->last--;
return OK;
}
//线性表的输出
void print_seqList(SeqList *L)
{
int j;
for (j=1;j<=L->last;j++)
{
printf("%d\t",L->elem[j-1]);
if (j%5==0)
{
printf("\n");
}
}
}
int main()
{
SeqList *L;
L=InitList();
int a,j,locate,e;
for (j=1;j<10;j++)
{
printf("请输入要插入的数字:\n");
scanf("%d",&a);
InsList(L,a,j);
}
printf("\n");
printf("————————————————————:\n");
printf("————————————————————:\n");
printf("插入后的列表为:\n");
print_seqList(L);
printf("\n");
printf("————————————————————:\n");
printf("————————————————————:\n");
printf("查找元素5是否存在,显示下标:\n");
locate = Locate(L,5);
printf("%d\n",locate);
printf("————————————————————:\n");
printf("————————————————————:\n");
printf("删除第7个元素,返回被删除的元素:\n");
DelList(L,7,&e);
printf("被删除的元素是:%d\n",e);
return 0;
}
文章作者: 李浩
文章链接: https://leehoward.cn/2019/10/15/算法-线性表之顺序表/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 leehoward
打赏
  • 微信
  • 支付宝

评论