顺序表的定义及其相关基本操作

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 #define maxSize 100
 5 typedef struct{
 6     int data[maxSize];    // 存放顺序表元素的数组
 7     int length;        //存放顺序表的长度
 8 }Sqlist;    //顺序表定义的类型
 9 
10 // 但在考试中常用如下方式:
11 int A[maxSize];
12 int n;
13 void initList(Sqlist &L){
14     L.length = 0;
15 }
16 //在顺序表查找第一个值等于e的元素,并返回其下标
17 int FindElem(Sqlist L, int e){
18     for(int i = 0;i < L.length; ++i)
19         if(e == L.data[i])
20             return i;
21     return -1;
22 }
23 //用e返回顺序表中制定位置p(0<=p<=length-1)位置上的元素
24 int getElem(Sqlist L,int p,int &e){            //e要改变,所以用引用型
25     if(p < 0 || p >L.length-1)    //p越界错误时返回-1
26         return -1;
27     e = L.data[p];
28     return 1;
29 }
30 // 在顺序表的第p(0<=p<=length)个位置上插入新的元素e(可插入的位置为length+1)
31 int insertElem(Sqlist &L, int p, int e){    //L本身要发生改变,所以用引用型
32     if(p < 0 || p > L.length || L.length==maxSize) 
33         //位置是错的或者已经达到顺序表的最大允许值,插入不成功,返回0
34         return 0; 
35     for(int i=L.length-1; i>=p;--i)
36         L.data[i+1] = L.data[i];    //从后往前,逐个将元素后移一位
37     L.data[p] = e;        //将e放在插入位置P上
38     L.length++;            //表内元素多了一个,表长加1
39     return 1;            //插入成功,返回1
40 }
41 
42 //删除顺序表L中下标为p(0<=p<=length)的元素,成功返回1,否则返回0,并将被删除元素的值赋给e
43 int deleteElem(Sqlist &L,int p ,int &e){    //顺序表和e都要改变,用引用型
44     if(p < 0 || p > L.length-1)
45         return 0;
46     e = L.data[p];    //将被删除元素赋给e
47     for(int i = p; i<L.length-1; i++)
48         L.data[i] = L.data[i+1];        //删除元素后面的元素要依次前移一个位置
49     L.length--;        //表长减1
50     return 1;        //删除成功,返回1
51 }
52 int main()
53 {
54     //测试 顺序表 
55     Sqlist L;
56     initList(L);//空表 
57     insertElem(L,0,1);//第0个位置插入1 
58     cout<<L.length<<endl;//此时顺序表的长度为1
59     insertElem(L,1,2);
60     insertElem(L,2,3);
61     cout<<FindElem(L,2)<<endl;//查找值为2的元素返回其下标未找到返回-1 
62     int e;
63     //获取下标为1的元素
64     cout<<getElem(L,1,e)<<endl;
65     cout<<e<<endl; 
66     //删除下标为0的元素
67     deleteElem(L,0,e);
68     cout<<e<<endl;
69     cout<<L.length<<endl;
70     return 0;
71 }
原文地址:https://www.cnblogs.com/wydxry/p/11360602.html