这是一个使用C++语言实现的顺序表。顺序表是一种线性表,它的元素在物理上是连续存储的。这里的顺序表是用数组来实现的。以下是对代码中函数的简单解释:
-
InitList(SeqList &L):初始化顺序表,将所有元素赋值为0,长度为0。
-
ListInsert(SeqList &L,int i,int c):在顺序表的第i个位置后插入元素c,原来在第i个位置及其后面的元素都要向后移动一个位置。
-
ListDelete(SeqList &L,int i,int &c):删除顺序表的第i个位置的元素,并将其值赋给c,原来在第i个位置后面的元素都要向前移动一个位置。
-
GetElem(SeqList L,int i):按位查找顺序表中第i个位置的元素。
-
LocateElem(SeqList L,int i):按值查找顺序表中值为i的元素,返回其在顺序表中的位置。
在主函数中,先声明一个顺序表L,然后对其进行初始化,插入元素,删除元素,按位查找元素和按值查找元素。
#include <iostream>
#define Maxsize 10
typedef struct {//定义列表
int data[Maxsize];
int length;
}SeqList;
//初始化。初始化赋值为0;
void InitList(SeqList &L){
for(int i=0;i<Maxsize;i++){
L.data[i]=0;
}
L.length=0;
}
//添加元素
void ListInsert(SeqList &L,int i,int c){//插入i后,元素c
for(int j=L.length;j>=i;j--){//后面元素依次往后移
L.data[j]=L.data[j-1];
}
L.data[i-1]=c;//修改i的位置值为c
L.length++;//长度+1
}
//删除元素
void ListDelete(SeqList &L,int i,int &c){//删除i后的元素c
for (int j=i;j<L.length;j++) {//i后的元素一次往前移
L.data[j-1]=L.data[j];
}
L.data[i-1]=c;
L.length--;
}
//按位查询
//顺序表有顺序,所以不用遍历
int GetElem(SeqList L,int i){
return L.data[i-1];
}
//按值查询
//需要循环遍历
int LocateElem(SeqList L,int i){
for(int j=0;j<L.length;j++){
if (L.data[j]==i){
return j+1;
}
}
return 0;
}
int main() {
SeqList L;//声明一个顺序表
InitList(L);
ListInsert(L,5,4);
int c=-1;//把&c的值带回来
ListDelete(L,3,c);
scanf("c=%d",c);//删除的数值为多少
GetElem(L,3);
LocateElem(L,9);
return 0;
}
标签:初始化,顺序,按值,int,SeqList,元素,按位,位置
From: https://blog.csdn.net/qq_75113277/article/details/137357084