#include <stdio.h>
#define MaxSize 50
typedef int elemType;//让顺序表存储其他类型元素时可以快速完成代码修改
typedef struct{
elemType data[MaxSize];
int length;//顺序表长
}SqList;
bool InsertList(SqList &sqList,int pos,elemType value)
{
if(pos<1 || pos >sqList.length+1)//判断插入位置是否合法,插入位置应是在 1<pos<length+1
{
return false;
}
if(sqList.length==MaxSize)//判断表长是否已满
{
return false;
}
//下面for循环是将插入位置空出来,将插入位置以及它后面的位置往后移
for (int i=sqList.length; i >=pos; i--)
{
sqList.data[i]= sqList.data[i-1];
}
sqList.data[pos-1]=value;//在空出来的位置上将值附上去,本来是pos的位置,但是由于数组,所以要-1
sqList.length++;//线性表长度加1
return true;
}
//线性表打印的函数
void PrintList(SqList sqList)
{
//使用循环将线性表打印出来
for (int i = 0; i < sqList.length; i++)
{
printf("%3d",sqList.data[i]);
}
printf("\n");
}
bool DeleteList(SqList &sqList,int pos,elemType &delValue)
{
//判断删除元素的位置 是否合法
if(pos <1 || pos>sqList.length)
{
return false;
}
delValue=sqList.data[pos-1];
int i;
for ( i = pos; i < sqList.length; i++)
{
sqList.data[i-1]=sqList.data[i];
}
sqList.length--;
return true;
}
//查找某个元素的位置
int LocateValue(SqList sqList,elemType value)
{
int i;
for (i = 0; i < sqList.length; i++) {
if(value==sqList.data[i])
return i+1;
}
return 0;
}
//顺序表的初始化及插入操作实战
int main() {
SqList sqList;//定义了一个顺序表,sqList就是一个顺序表
bool ret;
elemType delValue;
sqList.data[0]=1;
sqList.data[1]=2;
sqList.data[2]=3;
sqList.length=3;
ret=InsertList(sqList,2,30);
if(ret)
{
printf("Insert List success\n");
PrintList(sqList);
} else{
printf("Insert List failed\n");
}
printf("--------------------\n");
ret=DeleteList(sqList,4,delValue);
if(ret){
printf("delete success and Deleted Value=%d\n",delValue);
// PrintList(sqList);
} else{
printf("delete false\n");
}
PrintList(sqList);
int pos;
pos=LocateValue(sqList,30);
if(pos)
{
printf("find success,pos is=%d",pos);
} else{
printf("find failed");
}
return 0;
}