顺序表(1)——静态分配(数组)
相关操作(创销,增删查):
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 10
//顺序表定义类型(静态分配—数组)
typedef struct {
int data[MaxSize];
int length;
}SqList;
//初始化一个顺序表
void InitList(SqList &L){
L.length=0;
}
//顺序表插入元素
bool InsertList(SqList &L,int i,int e){
if(i<1||i>L.length+1){
return false;
}//判断输入是否合法
if(L.length>MaxSize){
return false;
}//是否超出数组最大长度
for(int j=L.length;j>=i;j--){
L.data[j]=L.data[j-1];
L.data[j-1]=e;
L.length++;
}
return true;
}
//顺序表删除元素
bool DeleteList(SqList &L,int i,int &e){
if(i<1||i>L.length){
return false;
}
e=L.data[i-1];
for(int j=i;j<L.length;j++){
L.data[i-1]=L.data[i];
L.length--;
}
return true;
}
//顺序表(按值)查找元素
int LocateList(SqList L,int e){
//for循环扫描全表寻找e
for(int i=0;i<L.length;i++){
if(L.data[i]==e){
return i;
}else{
return 0;
}
}
}
//遍历当前顺序表
void printList(SqList L){
for(int i=0;i<L.length;i++){
printf("%d",L.data[i]);
}
printf("\n");
}
int main(int argc, char *argv[]) {
//声明一个顺序表
SqList L;
//初始化一个顺序表
InitList(L);
int i;
int a[5]={
1,2,3,4,5};
for(i=1;i<5;i++)
InsertList(L,i,a[i-1]);
//打印当前顺序表
printList(L);
//在第二个元素后插入一个元素8
InsertList(L,2,8);
//打印当前顺序表
printList(L);
//删除最后一个元素
int e=-1;
DeleteList(L,L.length,e);
//打印当前顺序表
printList(L);
return 0;
}
暂未解决问题:编译无错误,但是无法运行