#include<iostream>
#include<stdio.h>
#define InitSize 10
using namespace std;
typedef struct{
int *data;
int MaxSize;
int length;
}SqList;
//初始化
void InitList(SqList &L){
L.data = new int[InitSize];
L.MaxSize = InitSize;
L.length = 0;
}
//动态分配
void IncreaseList(SqList &L,int len){
int *p = L.data;
L.data = new int[L.MaxSize+len];
for(int i=0;i<L.length;i++){
L.data[i] = p[i];
}
L.MaxSize = L.MaxSize + len;
delete p;
}
//插入元素
bool ListInsert(SqList &L,int i,int e){
if(i<1||i>L.length) return false;
if(L.length >= L.MaxSize) return false;
for(int j=L.length;j>i-1;j--){
L.data[j] = L.data[j-1];
}
L.data[i-1] = e;
L.length++;
return true;
}
//删除元素
bool ListDelete(SqList &L,int i,int &e){
if(i<1||i>L.length) return false;
e = L.data[i-1];
for(int j=i;j<L.length;j++){
L.data[j-1] = L.data[j];
}
L.data[L.length-1] = 0;
L.length--;
return true;
}
//按序查找
int GetElem(SqList &L,int i){
cout << L.data[i-1] << endl;
}
//按数查找
int LocateElem(SqList &L,int e){
for(int i=0;i<L.length;i++){
if(L.data[i]==e) cout << i+1 << endl;
}
}
//返回顺序表
void Print(SqList &L){
for(int i=0;i<L.MaxSize;i++)
cout<<L.data[i]<<",";
}
int main(){
SqList L;
InitList(L);
IncreaseList(L,5);
L.data[0] = 1;
L.data[1] = 2;
L.data[2] = 3;
L.data[3] = 4;
L.data[4] = 5;
L.length = 5;
ListInsert(L,3,99);
int e;
ListDelete(L,1,e);
cout << "删除的是:"<< e << endl;
GetElem(L,3);
LocateElem(L,99);
Print(L);
return 0;
}
C++顺序表基本实现
于 2022-05-14 10:28:11 首次发布