Sqlist
线性表的实现
步骤:
1.申请空间:使用new申请
2.打印顺序表:循环来打印,循环中i的值小于长度
3.插入元素:长度加1,在插入的之后每个值的下标都+1,也就是向后移动一个位置。判断空间是否满,判断插入元素是否符合。
4.删除元素:长度减一,在删除之后的每个值向前移动一个位置,也就是在删除元素之后都向前移动一个位置。判断空间是否空,判断插入元素是否符合。
代码:
1 #include<iostream>
2 using namespace std;
3
4 template<class Type>
5 class Sqlist
6 {
7 public:
8 Sqlist()
9 {
10 mm = 0;
11 nn = 0;
12 return;
13 }
14 Sqlist(int ); //申请空间
15 void prt_Sqlist(); //顺序输出元素和长度
16 int flag_Sqlist(); //检测顺序表的状态
17 void insert_Sqlist(int ,Type); //插入元素
18 void del_Sqlist(int); //删除元素
19 private:
20 int mm; //空间存储量
21 int nn; //顺序表长度
22 Type *v; //顺序表存储首地址
23 };
24
25 //建立顺序表
26 template<class Type>
27 Sqlist<Type>::Sqlist(int m)
28 {
29 mm = m;
30 v = new Type[mm];
31 nn = 0;
32 return ;
33 }
34
35 //顺序输出元素的长度
36 template<class Type>
37 void Sqlist<Type>::prt_Sqlist()
38 {
39
40 cout<<"nn="<<nn<<endl;
41 for(int i=0;i<nn;i++)
42 cout<<v[i]<<endl;
43 }
44
45 //检测顺序表的状态
46 template<class Type>
47 int Sqlist<Type>::flag_Sqlist()
48 {
49 if(nn = mm)
50 return -1;
51 if(nn == 0)
52 return 0;
53 return 1;
54 }
55
56 //插入元素
57 template<class Type>
58 void Sqlist<Type>::insert_Sqlist(int i,Type b)
59 {
60 int k;
61 if(nn == mm)
62 cout<<"FULL!"<<endl;
63 if(i>nn)
64 i = nn+1;
65 if(i<nn)
66 i=1;
67 for(k==nn;k>=i;k--)
68 v[k] = v[k-1];
69 v[i-1] = b;
70 nn = nn+1;
71 return ;
72 }
73
74 //删除制定元素
75
76 template<class Type>
77 void Sqlist<Type>::del_Sqlist(int i)
78 {
79 int k;
80 if(nn == 0)
81 {
82 cout<<"NULL!"<<endl;
83 }
84 if(i>nn || i<1)
85 {
86 cout<<"NO have this num"<<endl;
87 }
88 for(k=i;k<nn;k++)
89 v[k-1] = v[k];
90 nn = nn-1;
91 return ;
92
93 }
Main()
1 #include"Sqlist.h"
2
3 int main()
4 {
5 Sqlist<int>s1(100); //容量为100
6 cout<<"第一次输出顺序表对象S1:"<<endl;
7 s1.prt_Sqlist();
8 s1.insert_Sqlist(1,2);
9 s1.insert_Sqlist(2,3);
10 s1.insert_Sqlist(3,4);
11 s1.insert_Sqlist(4,5);
12 cout<<"插入后:"<<endl;
13 s1.prt_Sqlist();
14 s1.del_Sqlist(2);
15 cout<<"删除后:"<<endl;
16 s1.prt_Sqlist();
17 }