一、头文件与宏定义
#include
#define ElemType int
#define MAXSIZE 6
二、结构体定义
typedef struct{
ElemType data[MAXSIZE];
int len;
}Sqlist;
三、函数声明
void initList(Sqlist &list); //初始化顺序表
bool isEmpty(Sqlist &list); //判断顺序表是否为空
bool isFull(Sqlist list); //判断顺序表空间是否已满
void append(Sqlist &list,ElemType e); //追加数据
bool insert(Sqlist &list,int i,ElemType e); //在i位置插入数据e
void print(Sqlist list); //遍历数据
int locateElem(Sqlist list,ElemType e); //查找某个元素位置
ElemType getElem(Sqlist list,int i); //查找某个元素位置的值
bool deleteElem(Sqlist &list,int i); //删除某个位置的元素
四、函数体
/*
function:初始化顺序表
param:Sqlist
return:void
*/
void initList(Sqlist &list){
for(int i = 0;i
/**
判断顺序表是否为空
*/
bool isEmpty(Sqlist list){
if(list.len==0){
return true;
}else{
return false;
}
}
/**
判断顺序表是否已满
*/
bool isFull(Sqlist list){
if(list.len>=MAXSIZE){
return true;
}else{
return false;
}
}
/*
function:顺序表 追加数据
param:Sqlist,ElemType
return:void
*/
void append(Sqlist &list,ElemType e){
if(list.len>>插入一条数据!\n");
}else{
printf("#结果>>>顺序表已满!\n");
return ;
}
}
/*
function:顺序表 在i位置插入数据
param:Sqlist,int,ElemType
return:bool布尔值
*/
bool insert(Sqlist &list,int i,ElemType e){
int index = i -1; //位置转下标
if(index<0||index>list.len||list.len>=MAXSIZE){//判断小标是否合法,顺序表是否已满
return false;
}else{
for(int j=list.len;j>index;j--){ //控制i位置开始的元素往后移动,腾出i位置的空间
list.data[j] = list.data[j-1];
}
list.data[index] = e; //在位置i插入数据e
list.len++; //顺序表长度加1
return true;
}
}
/*
function:顺序表 遍历数据
param:Sqlist
return:void
*/
void print(Sqlist list){
printf("#结果>>>");
for(int i=0;i
/**
查找元素位置
*/
int locateElem(Sqlist list,ElemType e){
int index = -1;
for(int i=0;i
/**
查找某个位置的元素值
*/
ElemType getElem(Sqlist list,int i){
if(i<1||i>list.len){
return -999;
}else{
return list.data[i-1];
}
}
/**
删除某个位置的元素
*/
bool deleteElem(Sqlist &list,int i){
int index = i - 1; //转位置为下标
if(index<0||index>list.len){
return false;
}else{
for(int j=index;j
五、函数入口
int main(){
Sqlist list;
int cmd;
while(true){
printf("\n\n--------操作顺序表(静态),最大长度为%d\n",MAXSIZE);
printf("操作:\n(1.初始化\t2.追加数据\t3.插入数据\t4.遍历数据\t\n5.删除数据\t6.按值查找数据\t7.按位置查找数据)");
printf("\n请输入操作:");
scanf("%d",&cmd);
printf("#############\n");
switch(cmd){
case 1:
//初始化顺序表
initList(list);
break;
case 2:
//追加数据
int appdata;
printf("输入追加数据的值:");
scanf("%d",&appdata);
append(list,appdata);
break;
case 3:
//插入数据
int insertdata;
int insertlocate;
printf("插入数据:");
scanf("%d",&insertdata);
printf("插入的位置:");
scanf("%d",&insertlocate);
bool isInsert;
isInsert = insert(list,insertlocate,insertdata);
if(isInsert){
printf("插入成功!");
}else{
printf("插入失败,位置选择有问题……");
}
break;
case 4:
//遍历数据表
print(list);
printf("\n");
break;
case 5:
//删除数据
int deletelocate;
printf("删除数据位置:");
scanf("%d",&deletelocate);
deleteElem(list,2);
break;
case 6:
//按值查找
int searchvalue;
int number;
printf("查找某个值:");
scanf("%d",&searchvalue);
number = locateElem(list,searchvalue);
printf("元素位置:%d",number);
break;
case 7:
//按序号查找
int searchlocate;
printf("查找序号:");
scanf("%d",&searchlocate);
printf("第%d个元素的值为%d",searchlocate,getElem(list,searchlocate));
break;
default:
return -1;
break;
}
printf("\n");
}
return 0;
}
六、运行情况