目录
1.顺序表类型定义
typedef struct{
int elem[MAXSIZE];
int length;
}SqList;
2.初始化顺序表
void InitList(SqList &L){//初始化
L.length=0;
int x;
for(;;){
scanf("%d",&x);
if(x==-1)
break;
L.elem[L.length]=x;
L.length++;
}
}
3.遍历输出顺序表内容
void PrintList(SqList L){//遍历输出
printf("线性表内容:");
for(int i=0;i<L.length;i++)
printf("%4d",L.elem[i]);
printf("\n");
printf("线性表长度:%d\n",L.length);
}
4.在指定位置插入
bool InsertList(SqList &L,int a,int x){//插入
if(a<1||L.length==MAXSIZE||a>L.length+1)
return false;
for(int i=L.length-1;i>=a-1;i--)
L.elem[i+1]=L.elem[i];
L.elem[a-1]=x;
L.length++;
return true;
}
5.删除指定位置元素
bool DelList(SqList &L,int a){//删除
if(a<1||L.length==0||a>L.length)
return false;
printf("删除的元素是:%d\n",L.elem[a-1]);
for(int i=a-1;i<L.length-1;i++)
L.elem[i]=L.elem[i+1];
L.length--;
return true;
}
6.查找指定元素值所在位置
bool FindList(SqList L,int x){//按值查找
for(int i=0;i<L.length;i++){
if(L.elem[i]==x)
return true;
}
return false;
}
7.完整代码
#include <stdio.h>
#define MAXSIZE 50
typedef struct{
int elem[MAXSIZE];
int length;
}SqList;
void InitList(SqList &L){//初始化
L.length=0;
int x;
for(;;){
scanf("%d",&x);
if(x==-1)
break;
L.elem[L.length]=x;
L.length++;
}
}
void PrintList(SqList L){//遍历输出
printf("线性表内容:");
for(int i=0;i<L.length;i++)
printf("%4d",L.elem[i]);
printf("\n");
printf("线性表长度:%d\n",L.length);
}
bool InsertList(SqList &L,int a,int x){//插入
if(a<1||L.length==MAXSIZE||a>L.length+1)
return false;
for(int i=L.length-1;i>=a-1;i--)
L.elem[i+1]=L.elem[i];
L.elem[a-1]=x;
L.length++;
return true;
}
bool DelList(SqList &L,int a){//删除
if(a<1||L.length==0||a>L.length)
return false;
printf("删除的元素是:%d\n",L.elem[a-1]);
for(int i=a-1;i<L.length-1;i++)
L.elem[i]=L.elem[i+1];
L.length--;
return true;
}
bool FindList(SqList L,int x){//按值查找
for(int i=0;i<L.length;i++){
if(L.elem[i]==x)
return true;
}
return false;
}
int main(){
SqList L;
InitList(L);
PrintList(L);
InsertList(L,3,6);
PrintList(L);
DelList(L,2);
PrintList(L);
int x;
scanf("%d",&x);
bool flag=FindList(L,x);
if(flag)
printf("找到值%d\n",x);
else
printf("查找失败\n");
return 0;
}