c++顺序表
这是c++版数据结构的开始篇章,本人正在学习c++,准备把之前c语言实现过的数据结构用c++再次实现一遍。最近我会一直更新这个系列。由于本人正在学习中,文章出现的错误请私信我指正,或者给我发邮件3332784700@qq.com来学习交流。
这些代码都是经过我的测试,可以直接拿来用。此代码中有些函数我没调用,基本功能我都写了,使用者可以自行调用。
加油吧,各位。多动手,多敲,熟能生巧。
#include<iostream>
using namespace std;
template<class T>
class SeqList {
public:
T* data;
int maxsize;
int length;
SeqList(int sz) :maxsize(sz), length(0) {
data = new T[maxsize];
if (data == nullptr) {
cout << " 初始化错误" << endl;
exit(1);
}
}
~SeqList() {
delete data;
data = nullptr;
}
bool IsEmpty() {
return length == 0;
}
bool IsFull() {
return length == maxsize;
}
void Input(T e){
if (!IsFull()) {
data[length] = e;
length++;
}
else {
cout << "空间不足" << endl;
}
}
void Del_tail() {
length--;
}
void Del_Head() {
int tmp;
for (int i = 0; i < length; i++) {
data[i] = data[i + 1];
}
length--;
}
void Show() {
if (IsEmpty()) {
cout << "该顺序表为空 " << endl;
}
else {
cout << "该顺序表的遍历结果为 " << endl;
for (int i = 0; i <length; i++) {
cout << data[i]<<" ";
}
}
}
T Search_pos(int pos) {
if (pos > length) {
cout << "位置错误" << endl;
}
return data[pos - 1];
}
int Search_val(T e) {
for (int i = 1; i <= length; i++) {
if (data[i] == e) {
return i;
}
}
return - 1;
}
void expend() {
delete data;
data = new T[maxsize * 2];
}
};
int main() {
int sc;
cout << "请输入你要开辟的大小";
cin >> sc;
SeqList<int > sq(sc);
int length = 0;
cout << "请输入所存入数据的长度";
cin >> length;
while (length > 0) {
cout << "请输入存入顺序表的值(一次输入一个数字):";
cin >> sc;
sq.Input(sc);
length--;
}
sq.Show();
}