#include <stdio.h>
#include <stdlib.h>
#define InitSize 5
//定义顺序表结构体
typedef struct{
int *data;
int MaxSize;
int length
}Sqlist;
//初始化顺序表ce
void InitList(Sqlist *L){
L->data = (int*)malloc(InitSize*sizeof(int));
L->length=0;
L->MaxSize=InitSize;
}
//销毁顺序表
void DestoryList(Sqlist *L){
L->length=0;
L->MaxSize=0;
free(L->data);
printf("该表已经销毁!\n");
}
//增加容量ce
void IncreaseSize(Sqlist *L,int len){
int *p = L->data;
L->data = (int*)malloc((L->MaxSize+len)*sizeof(int));
for(int i=0;i<L->MaxSize;i++){
L->data[i] = p[i];
}
L->MaxSize+=len;
free(p);
}
//遍历打印顺序表ce
void PrintList(Sqlist L){
int len = L.length; //这里有个用L->length会报错
for(int i=0;i<len;i++){
printf("%3d",L.data[i]);
}
printf("\n");
}
//返回表长 ce
int Length(Sqlist L){
return L.length;
}
//判空操作
int Empty(Sqlist L){
if(L.length==0){
return 0;
}else{
return 1;
}
}
// 插入操作 ce
int ListInsert(Sqlist *L,int i,int e){
if(i<1||i>L->length+1){
printf("输入的位序不合法!\n");
return 0;
}
if(L->length>=L->MaxSize){
printf("该顺序表已满,请扩容。\n");
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;
}
//删除操作ce
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;
}
//按位查找ce
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;
}
//按值查找 ce
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 main(){
int e;
Sqlist L;
Sqlist M;
InitList(&L);//初始化表
printf("%d\n",Length(L));
ListInsert(&L,1,5);
ListInsert(&L,1,4);
ListInsert(&L,1,3);
ListInsert(&L,1,2);
ListInsert(&L,1,1);
ListInsert(&L,1,4);
PrintList(L);
IncreaseSize(&L,1);
ListInsert(&L,1,6);
PrintList(L);
ListInsert(&L,1,6);
ListDelete(&L,1,&e);
PrintList(L);
GetElem(L,3);
LocateElem(L,4);
LocateElem(L,6);
DestoryList(&L);
return 0;
}
顺序表(动态实现)(C语言)
最新推荐文章于 2024-07-25 11:38:39 发布