顺序表的基本操作实现
/* 实现线性表-顺序表的功能*/
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10 //表最大长度设置
typedef int ElemType; //顺序表数据类型
typedef struct{//顺序表 定义
ElemType *elem;//表元素的数据类型,用基地址存储
int length;//表长
}SqList;
//方法体:创 增删改查
//初始化线性表
bool InitList(SqList &L){
L.elem = new int[MAXSIZE];
L.length = 0;
return true;
}
//创建顺序表
void CreateList(SqList &L){
printf("\n请输入表长:");
scanf("%d",&L.length);
printf("\n请输入表中元素:");
for(int i=0;i<L.length;i++){
scanf("%d",&L.elem[i]);
}
}
//在第i个位置插入e
bool InsertList(SqList &L,int e,int i){
//检查插入的位置是否有误
if(i<0||i>L.length){//插入的位置错误
printf("\n修改的位置出错!");
return false;
}
if(L.length==MAXSIZE){//表已满
return false;
}
//满足插入定义,开始插入
for(int j=L.length;j>i-1;j--){//将表中元素依次后移
L.elem[j] = L.elem[j-1];
}
L.elem[i-1] = e;
L.length++;
return true;//插入成功
}
//删除某位置的元素
bool DeleteById(SqList &L,int i){
if(i<0||i>L.length){//删除的位置出错
printf("\n删除的位置出错!");
return false;
}
//可删除,开始删除操作
i = i -1;
for(i;i<L.length;i++){//依次将数据前移
L.elem[i] = L.elem[i+1];
}
--L.length;
return true;
}
//修改某位置的元素
bool ReviseById(SqList &L,int i,int e){
if(i<0||i>L.length){//修改的位置出错
printf("\n修改的位置出错!");
return false;
}
//可修改
L.elem[i-1] = e;
return false;
}
//展示链表
void ShowList(SqList L){
printf("\n表中元素为:");
for(int i =0;i<L.length;i++){
printf("%d\t",L.elem[i]);
}
}
int main(){
SqList L;
InitList(L);
CreateList(L);
ShowList(L);
//插入检查
InsertList(L,0,2);
ShowList(L);
//删除检查
DeleteById(L,5);
ShowList(L);
//修改检查
ReviseById(L,5,123);
ShowList(L);
}