#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#define linksize 1000
#define linknum 100
using namespace std;
typedef int elemtype;//顺序表数据类型重定义
typedef struct {
elemtype *list; //指向储存空间的指针
int max; //顺序表最大长度
int len; //当前使用长度
}Sqlist;//顺序表
Sqlist *Create() {
Sqlist *L = new Sqlist;// Sqlist *L = (Sqlist *)malloc(sizeof(Sqlist));
L->list = new elemtype;// L->list = (elemtype *)malloc(sizeof(Sqlist));
L->max = linksize;
L->len = 0;
return L;
}//建立顺序表
void Clear(Sqlist *L) {
if (L == NULL) return;
L->len = 0;
}//清空顺序表
void Destory(Sqlist *L) {
if (L == NULL) return;
free(L->list);
free(L);
}//销毁顺序表
void Insert(Sqlist *L, elemtype data) {
if (L->max == L->len) {
elemtype newsize = sizeof(elemtype)*(linknum + linksize);
elemtype *tmp = (elemtype*)realloc(L->list, newsize);
L->list = tmp;
L->max += linknum;
}//增加顺序表空间(增加空间可以不要, 再定义的时候大一点就可以
L->list[L->len++] = data;
}//顺序表添加元素
void Push(Sqlist *L, int pos, elemtype data) {
if (L == NULL || pos < 0 || pos > L->len) {
cout << "插入失败\n";
return;
}
for (int i = L->len; i > pos; --i) L->list[i] = L->list[i - 1];
L->list[pos] = data;
++L->len;
}//在pos位置处插入一个元素
void Del(Sqlist *L, int i) {
if (L == NULL || i < 0 || i > L->len) {
cout << "删除失败\n";
return;
}
while (i < L->len) {
L->list[i] = L->list[i++ + 1];
}
--L->len;
}//删除下标为i的元素
void Find(Sqlist *L, int i) {
if (L == NULL || i < 0 || i >= L->len) {
cout << "查找失败\n";
return;
}
cout << "查找成功\n";
cout << L->list[i] << endl;;
return;
}//查找下标为i的元素
void Display(Sqlist *L) {
if (L == NULL) {
cout << "输出失败\n";
return;
}
for (int i = 0; i < L->len; ++i) {
cout << L->list[i];
if (i < L->len - 1) cout << " ";
else cout << endl;
}
}//输出顺序表
int main() {
ios::sync_with_stdio(0);
Sqlist *L;
L = Create();//建立顺序表
int n;
cin >> n;//输入顺序表的长度
int x;
for (int i = 0; i < n; ++i) {
cin >> x;
Insert(L, x);//顺序表添加元素(尾插
}
Display(L);//输出顺序表
cin >> x;
Del(L, x);//删除编号为x的元素
Display(L);//输出顺序表
int t, m;
cin >> t >> m;
Push(L, t, m);//在编号t之前插入一个元素
Display(L);//输出顺序表
cin >> x;
Find(L, x);//查找下标为x的元素
return 0;
}
另一种方式
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#define linksize 100000
using namespace std;
typedef int elemtype;
typedef struct {
elemtype data[linksize];
int length;
int max;
}Sqlist; //顺序表
void Init(Sqlist &L) {
L.length = 0;
L.max = linksize;
}//初始化
void Insert(Sqlist &L, elemtype e) {
L.data[L.length++] = e;
}//存入元素
void Insert_i(Sqlist &L, int i, elemtype e) {
L.data[i] = e;
++L.length;
}//替换元素
void Push(Sqlist &L, int pos, elemtype e) {
for (int i = L.length - 1; i > pos; --i) L.data[i] = L.data[i - 1];
L.data[pos] = e;
++L.length;
}//pos后插入元素
void Del(Sqlist &L, int i) {
for (int j = i; j < L.length; ++j) L.data[j] = L.data[j + 1];
--L.length;
}//删除元素
int Find(Sqlist &L, elemtype e) {
for (int i = 0; i < L.length; ++i) {
if (L.data[i] == e) return i;
}
return -1;
}//查找
void Display(Sqlist &L) {
for (int i = 0; i < L.length; ++i) {
cout << L.data[i];
if (i < L.length - 1) cout << " ";
else cout << endl;
}
}//输出
int main() {
ios::sync_with_stdio(0);
return 0;
}