//顺序表 静态分配
#include <stdio.h>
#define MaxSize 10
//定义顺序表 结构体 静态实现
typedef struct{
int data[MaxSize];
int length;
}Sqlist;
//初始化顺序表
void InitList(Sqlist *L){
for(int i=0;i<MaxSize;i++){
L->data[i]=0;
}
L->length=0;
}
//遍历打印 顺序表
void PrintList(Sqlist L){
int len = L.length; //这里有个用L->length会报错
for(int i=0;i<len;i++){
printf("%3d",L.data[i]);
}
printf("\n");
}
//返回顺序表的表长
int Length(Sqlist L){
return L.length;
}
//判空操作
int Empty(Sqlist L){
if(L.length==0){
return 0;
}else{
return 1;
}
}
//插入操作
int ListInsert(Sqlist *L,int i,int e){
if(i<1||i>L->length+1){
printf("输入的位序不合法!\n");
return 0;
}
if(L->length>=MaxSize){
printf("该顺序表已满,无法输入。");
return 0;
}
for(int j=L->length;j>=i;j--){
L->data[j]=L->data[j-1];
}
L->data[i-1]=e;
L->length++;
return 1;
}
//删除操作
int ListDelete(Sqlist *L,int i,int *e){
if(i<1||i>L->length){
printf("输入的位序不合法!\n");
return 0;
}
*e = L->data[i-1];
for(int j=i;j<L->length;j++){
L->data[j-1]=L->data[j];
}
L->length--;
printf("已删除第%d位,其值为%d\n",i,*e);
return 1;
}
//按值查找操作
void LocateElem(Sqlist L,int e){
for(int i=0;i<L.length;i++){
if(L.data[i]==e){
printf("值为%d的位序为%d\n",e,i+1);
}
}
}
//按位查找操作
int GetElem(Sqlist L,int i){
if(i<1||i>L.length){
printf("输入的位序有误!\n");
return 0;
}
printf("第%d位的值为%d\n",i,L.data[i-1]);
return 1;
}
int main(){
int e;
Sqlist L;
InitList(&L);
ListInsert(&L,1,8);
ListInsert(&L,2,3);
ListInsert(&L,2,4);
ListInsert(&L,6,4);
PrintList(L);
LocateElem(L,4);
GetElem(L,3);
ListDelete(&L,3,&e);
PrintList(L);
printf("%d\n",Length(L));
printf("%d\n",Empty(L));
return 0;
}
顺序表(静态实现)(C语言)
于 2023-03-28 17:48:08 首次发布