这是创建的LIst.h头文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#ifndef LIST_H #define LIST_H class List { public : List( int size); ~List(); void DestroyList(); void ClearList(); bool ListEmpty(); int ListLength(); bool GetElem( int i, int *e); int LocateElem( int *e); bool ListInsert( int i, int *e); bool ListDelete( int i, int *e); bool PriorElem( int *currentElem, int *preElem); bool NextElem( int *currentElem, int *NextElem); void ListTraverse(); private : int *m_pList; int m_iSize; int m_iLength; }; #endif |
创建的list.cpp文件
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
#include"LIst.h" #include<iostream> using namespace std; List::List( int size) { m_iSize = size; m_pList = new int [m_iSize]; //申请堆内存 m_iLength = 0; } List::~List() { delete []m_pList; m_pList = 0; //不为NULL就等于0; } void List::DestroyList() { m_iLength=0; } void List::ClearList() { m_iLength = 0; } bool List::ListEmpty() { if (m_iLength == 0) { return true ; } else return false ; } int List::ListLength() { return m_iLength; } bool List::GetElem( int i, int *e) { if (i<0 || i>=m_iLength) { return false ; } else { *e = m_pList[i]; } } int List::LocateElem( int *e) { for ( int i = 0; i < m_iLength; i++) { if (*e == m_pList[i]) return i; } return -1; } bool List::ListInsert( int i, int *e) { if (i<0 || i>m_iLength) { return false ; } else { for ( int k = m_iLength - 1; k >= i; k--) { m_pList[k + 1] = m_pList[k]; } m_pList[i] = *e; m_iLength++; } } bool List::ListDelete( int i, int *e) { if (i<0 || i>m_iLength) { return false ; } else { for ( int k = i; k < m_iLength - 1; k++) { m_pList[k ]=m_pList[k + 1]; //直接覆盖了前面的元素 } m_iLength--; } } bool List::PriorElem( int *currentElem, int *preElem) { /*for (int i = 0; i < m_iLength; i++) { if (*currentElem == m_pList[i]) *preElem = m_pList[i - 1]; } return true;*/ //错误 int temp = LocateElem(currentElem); if (temp == -1) { return false ; } else { if (temp == 0) { return false ; } else { *preElem = m_pList[temp - 1]; return true ; } } } bool List::NextElem( int *currentElem, int *NextElem) { int temp = LocateElem(currentElem); if (temp == -1) { return false ; } else { if (temp == m_iLength) { return false ; } else { *NextElem= m_pList[temp + 1]; return true ; } } } void List::ListTraverse() { for ( int i = 0; i < m_iLength; i++) { cout << m_pList[i]<<endl; } } |
这是测试函数ListMain.cpp
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
|
#include<iostream> #include"LIst.h" /* 线性表--顺序表 以这个为例 3 5 7 2 9 1 8 bool InitList(); //创建线性表 void DestroyList(); //销毁线性表 void ClearList(); //清空线性表 bool ListEmpty(); //判断线性表是否为空 int ListLength(); //获取线性表的长度 bool GetElem(int i,Elem *e);//获取指定的元素 int LocateElem(Elem *e);//寻找第一个满足e的数据元素的位序 bool PriorElem(Elem *currentElem,Elem *preElem); //获取指定元素的前驱 bool NextElem(Elem *currentElem,Elem *NextElem);//获取指定元素的后继 bool ListInsert(int i,Elem *e); //在第i个插入元素 bool ListDelete(int i,Elem *e); //删掉第i个位置的元素 void ListTraverse(); //遍历线性表 */ using namespace std; int main() { //3 5 7 2 9 1 8 int temp = 0; int e1 = 3; int e2 = 5; int e3 = 7; int e4 = 2; int e5 = 9; int e6 = 1; int e7 = 8; List *list = new List(10); //cout << list->ListLength() << endl; list->ListInsert(0, &e1); //cout << list->ListLength() << endl; list->ListInsert(1, &e2); //cout << list->ListLength() << endl; list->ListInsert(2, &e3); list->ListInsert(3, &e4); list->ListInsert(4, &e5); list->ListInsert(5, &e6); list->ListInsert(6, &e7); list->ListTraverse(); /*list->GetElem(2,&temp); cout <<"temp="<< temp << endl; temp = 5; cout << list->LocateElem(&temp) << endl;*/ list->PriorElem(&e4,&temp); cout << "temp=" << temp << endl; list->NextElem(&e4, &temp); cout << "temp=" << temp << endl; /*list->ListDelete(0, &temp); if (!list->ListEmpty()) { cout << "not empty!"<< endl; } else { cout << "empty!" << endl; } list->ClearList(); if (!list->ListEmpty()) { cout << "not empty!" << endl; } else { cout << "empty!" << endl; } cout << "#" << temp << endl;*/ //list->ListTraverse(); //cout << m_iLength << endl; //错误 delete list; system ( "pause" ); return 0; } |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/qq_39486027/article/details/79595458