C++版本的顺序表实现结构
目录功能:
- 初始化顺序表
- 创建一个顺序表
- 输出顺序表
- 输出顺序表的长度
- 判断顺序表是否为空
- 输出顺序表的第n个元素 输出元素x的位置
- 在第n个元素位置上插入x元素
- 删除顺序表的第n个元素
- 测试顺序表的创建
#include<iostream>
#define maxsize 100
#define ElemType int
using namespace std;
typedef struct{
ElemType data[maxsize];
int length;
}sqlist;
//1.初始化顺序表结构
ElemType initList(sqlist &L){
L.length = 0;
return 1;
}
//2.输入n个顺序表的元素,创建一个顺序表
void createList(sqlist &L, ElemType n){
for(int i = 0; i < n; i++){
cin>>L.data[i];
}
L.length = n;
}
//3.输出顺序表
void printList(sqlist &L){
for(int i = 0; i < L.length; i++){
cout<<L.data[i]<<" ";
}
cout<<endl;
}
//4.输出顺序表的长度
int ListLength(sqlist &L){
return L.length;
}
//5.判断顺序表是否为空
bool isEmpty(sqlist &L){
if(L.length==0){
return true;
}
return false;
}
//6.输出顺序表的第n个元素
bool printOneElement(sqlist &L,int n){
if(n < 0 || n > L.length){
return false;
}
cout<<L.data[n-1]<<endl;
return true;
}
//7.输出元素x的位置(找到第一个就退出)
int ElementLocateList(sqlist &L, ElemType e){
for(int i = 0; i < L.length; i++){
if(L.data[i]==e){
return i+1;
}
}
//找遍了也没找到就返回-1
return -1;
}
//8.在第n个元素位置上插入e元素
bool insertList(sqlist &L, ElemType n, ElemType e){
if(n < 0 || n > L.length){
return false;
}
for(int i = L.length-1; i >= n-1; i--){
L.data[i+1] = L.data[i];
}
L.data[n-1] = e;
L.length++;
return true;
}
//9.删除顺序表的第n个元素
bool delOneElement(sqlist &L, int n){
if(n < 0 || n > L.length){
return false;
}
for(int i = n-1; i < L.length-1; i++){
L.data[i] = L.data[i+1];
}
L.length--;
return true;
}
//10.测试顺序表的创建
void testList(sqlist &L){
for(int i = 0; i < 5; i++){
L.data[i] = i+1;
}
L.length = 5;
}
int main(){
sqlist L;
//1.初始化
initList(L);
//10.测试自动创建顺序表
testList(L);
//3.打印出整个顺序表
printList(L);
//4.顺序表的长度
cout<<ListLength(L)<<endl;
//5. 判断顺序表是否为空
cout<<isEmpty(L)<<endl;
//6.输出顺序表的第n个元素
printOneElement(L,3);
//7.输出元素x的位置(找到第一个就退出)
cout<<ElementLocateList(L,4)<<endl;
//8.在第n个元素位置上插入e元素
insertList(L,3,6);
printList(L);
//9.删除顺序表的第n个元素
delOneElement(L,4);
printList(L);
return 0;
}
简单熟悉了一下,开启408复习之旅了。。。