1
/**************************************
2
线性表的顺序存储--顺序表
3
4
第i个元素的存储位置紧接在i-1个元素的存储位置后面,假定线性表的元素类型为ElemType,则
5
每个元素所占的存储空间大小(即字节数)为sizeof(ElemType),整个线性表所占的存储空间大
6
小为n*sizeof(ElemType),其中n表示线性表的长度
7
*************************************/
8
9
10
#include "stdafx.h"
11
#define MaxSize 50 //线性表的长度
12
typedef char ElemType; //定义线性表的元素类型为 char
13
struct List
14
{
15
ElemType list[MaxSize];
16
int size;
17
};
18
19
//****************************************************************置空表
20
void setnull(struct List *p)
21
{
22
p->size=0;
23
}
24
25
26
//****************************************************************插入结点
27
void insert(struct List *p,ElemType x,int i)
28
{
29
int j;
30
if(i<1||i>p->size+1) //例如: size=1或者4
31
printf("位置参数不正确,不能进行插入操作!\n");
32
else
33
{
34
p->size++; //(p->size)++
35
for(j=p->size-1;j>=i;j--)
36
p->list[j]=p->list[j-1]; //注意下标和size的关系j=size-1
37
p->list[j]=x;
38
39
}
40
}
41
//****************************************************************返回长度
42
int length(struct List *p)
43
{
44
return(p->size);
45
}
46
//****************************************************************取表中的第i个结点
47
int get(struct List *p,int i)
48
{
49
if (i>p->size)
50
return(-1);
51
else
52
return(p->list[i-1]);
53
}
54
55
//****************************************************************按值查找
56
int locate(struct List *p,ElemType x)
57
{
58
int i=0;
59
while (i<p->size && p->list[i]!=x) i++;
60
if (i==p->size)
61
return(-1);
62
else
63
return(i+1);
64
}
65
66
67
68
//****************************************************************显示顺序表
69
void display(struct List *p)
70
{
71
int j;
72
if(p->size==0)
73
printf("该顺序表为空,不能显示!\n");
74
else
75
{
76
printf("顺序表:");
77
if(p->size==1) //只有一个结点的情况
78
printf("%c",p->list[p->size-1]);
79
else//有一个以上结点的情况
80
{
81
for(j=0;j<p->size-1;j++)
82
printf("%c->",p->list[j]);
83
printf("%c",p->list[j]);//显示最后一个结点
84
}
85
printf("\n");
86
}
87
}
88
89
90
91
92
93
void main()
94
{
95
struct List L;
96
setnull(&L);
97
insert(&L,'a',1);
98
insert(&L,'b',2);
99
insert(&L,'c',2);
100
101
display(&L);
102
printf("线性表的长度:%d\n",length(&L));
103
104
}
105
/**************************************2
线性表的顺序存储--顺序表3

4
第i个元素的存储位置紧接在i-1个元素的存储位置后面,假定线性表的元素类型为ElemType,则5
每个元素所占的存储空间大小(即字节数)为sizeof(ElemType),整个线性表所占的存储空间大6
小为n*sizeof(ElemType),其中n表示线性表的长度7
*************************************/8

9

10
#include "stdafx.h"11
#define MaxSize 50 //线性表的长度12
typedef char ElemType; //定义线性表的元素类型为 char13
struct List 14
{15
ElemType list[MaxSize];16
int size;17
};18

19
//****************************************************************置空表20
void setnull(struct List *p)21
{22
p->size=0;23
}24

25

26
//****************************************************************插入结点27
void insert(struct List *p,ElemType x,int i)28
{29
int j;30
if(i<1||i>p->size+1) //例如: size=1或者431
printf("位置参数不正确,不能进行插入操作!\n");32
else33
{34
p->size++; //(p->size)++35
for(j=p->size-1;j>=i;j--)36
p->list[j]=p->list[j-1]; //注意下标和size的关系j=size-137
p->list[j]=x;38

39
}40
}41
//****************************************************************返回长度42
int length(struct List *p)43
{44
return(p->size);45
}46
//****************************************************************取表中的第i个结点47
int get(struct List *p,int i)48
{49
if (i>p->size)50
return(-1);51
else52
return(p->list[i-1]);53
}54

55
//****************************************************************按值查找56
int locate(struct List *p,ElemType x)57
{58
int i=0;59
while (i<p->size && p->list[i]!=x) i++;60
if (i==p->size)61
return(-1);62
else63
return(i+1);64
}65

66

67

68
//****************************************************************显示顺序表69
void display(struct List *p)70
{71
int j;72
if(p->size==0)73
printf("该顺序表为空,不能显示!\n");74
else75
{76
printf("顺序表:");77
if(p->size==1) //只有一个结点的情况78
printf("%c",p->list[p->size-1]);79
else//有一个以上结点的情况80
{81
for(j=0;j<p->size-1;j++)82
printf("%c->",p->list[j]);83
printf("%c",p->list[j]);//显示最后一个结点84
}85
printf("\n");86
}87
}88

89

90
91

92

93
void main()94
{95
struct List L;96
setnull(&L);97
insert(&L,'a',1);98
insert(&L,'b',2);99
insert(&L,'c',2);100

101
display(&L);102
printf("线性表的长度:%d\n",length(&L));103

104
}105



浙公网安备 33010602011771号