用C实现的基本操作
所需头文件及预定义
#include<stdlib.h>
#include<stdio.h>
#define MaxSize 100
#define ok 1
#define error 0
#define overflow -2
#define int Status
typedef struct{
int data[MaxSize];
int length;
}SqList;
初始化
//初始化操作,建立一个空的线性表L
Status InitList_Sq(SqList &L){
if(!L.data)
exit(overflow);
L.length = 0;
return ok;
}
建表
//建表
void CreastList(SqList &L,int n) {
printf("输入你想插入的数据:\n");
int x;
for(int i = 0;i < n;i++){
scanf("%d",&x);
L.data[i] = x;
L.length++;
}
}
销毁线性表
//销毁线性表
void DestoryList(SqList &L) {
if(L.data)
free(L.data); //释放存储空间
}
线性表清空
//线性表清空
void ClearList(SqList &L){
L.length = 0;
}
表长
//返回线性表的长度
Status ListLength(SqList L){
return L.length;
}
判断表是否为空
//判断线性表是否为空
Status ListEmpty(SqList L){
if(L.length==0)
return 1;
else
return 0;
}
查找指定位置的值
//线性表第i个元素返回给e
Status GetElem(SqList L,int i,int &e){
if(i < 1 || i > L.length) //判断i值是否合理,若不合理,返回error
return error;
e = L.data[i-1];
return ok;
}
查找给定值的位置
//线性表L中查找与给定e元素相等的元素
Status LocateElem(SqList L,int e){ //如果查找成功,返回该元素在表中的序号,否则返回0表示失败
for(int i = 0;i < L.length;i++)
if(L.data[i] == e)
return i+1;
return 0;
}
顺序表中指定位置插入
//顺序表的指定位置插入
Status ListInsert_Sq(SqList &L,int i,int e){
if(i < 1 || i> L.length+1) //判断i的范围是否有效
return error;
if(L.length >= MaxSize) //判断存储空间已满,不能插入
return error;
for(int j = L.length;j >= i;j--) //将要插入位置的元素及其后面的元素往后移
L.data[j] = L.data[j-1];
L.data[i-1] = e; //在指定位置放入插入的元素
L.length++; //顺序表现有数据长度加一
return ok;
}
删除表中指定位置的值
//删除指定位置的值并返回e
Status ListDelete_Sq(SqList &L,int i,int &e){
if(i < 1 || i > L.length+1) //判断i值是否合理,若不合理,返回error
return error;
e = L.data[i-1];
for(int j = i;j <= L.length-1;j++)
L.data[j-1] = L.data[j]; //被删除元素之后的元素前移
L.length--; //表长减1
return ok;
}
打印输出
//打印表
void print(SqList L){
int i;
for(i = 0;i < L.length;i++)
printf("%d",L.data[i]);
printf("\n");
}
(C++的正在写)
若以上代码有任何错误或可以改进的地方欢迎在评论区指出并讨论。
感谢你的阅读与支持!