在复习数据结构的过程中,对线性表中顺序表的理解认为不够深入,所以选择使用代码来加深印象,我选择的是C++来实现顺序表。(注:本代码中未使用malloc来申请新的空间)
#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
#define MaxSize 10
//顺序表的建立
typedef struct {
int data[MaxSize]; // 存储空间的基地址
int length; //当前长度
}SqList;
//顺序表的初始化
void initList(SqList &L) {//引用结构体 SqList
for (int i = 0; i < L.length; i++)
L.data[i] = 0;
L.length = 0;
cout << "顺序表初始化完成" << endl;
cout << "===============================" << endl;
}
// 顺序表传值
void createList(SqList &L,int n) {
cout << "请传入数值" << endl;
for (int i = 0; i < n; i++) {
cin >> L.data[i];
L.length++;
}
}
//打印顺序表
void printList(SqList L) {
if (L.length == 0) return;
cout << "=====================" << endl;
for (int i = 0; i < L.length; i++) {
cout << "第"<<i<<"个元素的值是"<<L.data[i]<<" =" << endl;
}
cout << "=====================" << endl;
}
//按值查找元素
int getElemvalue(SqList L,int n) {
int count = 0;
for (int i = 0; i < L.length; i++) {
if (n == L.data[i]) {
count++;
cout << "该元素存在且该元素在第" <<i<<"位"<< endl;
}
}
if (count == 0) {
cout << "该元素不存在" << endl;
return 0;
}
cout << "===============================" << endl;
}
//按位查找元素
int getElemindex(SqList L,int i) {
if (i<1 || i>=L.length) {
cout << "该顺序表中不存在这种元素" << endl;
return 0;
}
else {
cout << "第"<<i<<"位的值为"<<L.data[i] << endl;
return i;
}
cout << "===============================" << endl;
}
//在表中插入数据
int insertElem(SqList &L) {
int i, e;
cout << "请输入要插入的位置" << endl;
cin >> i;
if (i<0 || i>(L.length + 1)) {
cout << "输入的地址不合法" << endl;
return 0;
}
cout << "请输入要插入的值" << endl;
cin >> e;
if(L.length<MaxSize){
for (int j = L.length; j > i; j--) {
L.data[j + 1] = L.data[j];
}
L.data[i] = e;
L.length++;
printList(L);
cout << "插入成功" << endl;
return i;
}
cout << "===============================" << endl;
}
//删除元素
int deleteElem(SqList& L) {
int l;
cout << "请输入要删除元素值的位置" << endl;
cin >> l;
if (l<0 ||l > L.length) {
cout << "不存在这种元素" << endl;
return 0;
}
else{
for (int i = l; l < L.length; l++) {
L.data[i] = L.data[i + 1];
}
L.length --;
cout << "删除成功" << endl;
printList(L);
}
}
int main() {
SqList list;
cout << "请输入数组的长度" << endl;
int n;
cin >> n;
initList(list);//初始化list
createList(list,n);//list传值
printList(list);//打印list
int value,index;
cout << "请输入要查找的元素的值" << endl;
cin >> value;
getElemvalue(list, value);
cout << "请输入要查找的元素的索引" << endl;
cin >> index;
getElemindex(list,index);
insertElem(list);//在表中插入元素
deleteElem(list);//在表中删除元素
}
运行结构示意截图: