☰
对线性表(顺序表)的一些操作
2026/10/11 5:30:58 网站建设 项目流程

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int Elemtype;
//initialize list
typedef struct{
Elemtype date[MAXSZE];
Elemtype length;
} SeqList;


//动态化初始顺序表
SeqList* initList(){
SeqList* L=(SeqList*)malloc(sizeof(SeqList));
L->length=0;
L->date=(int*)malloc(sizeof(int)*MAXSIZE);
return L;
}//不仅要申请存放结构体的内存还要申请存放数据的内存

//尾部添加元素
int appendElem(SeqList* L,int e){
if(L->length>MAXSIZE){
printf("full");
return 0;
}
L->date[L->length]=e;
L->length++;
return 1;
}


//遍历顺序表
void ListElem(SeqList* L){
if(L->length>MAXSIZE){
printf("full");
return 0;
}
for(int i=0;i<L->length;i++){
printf("%d",L->date[i]);
}
}


//插入元素
int insertElem(int pos,int e){
if(L->length>MAXSIZE){
printf("full");
return 0;
}
if(pos<1||pos>L->length){
printf("插入位置错误");
return 0;
}
if(pos<L->length){
for(int i=L->length;i<pos-1;i--){
L->date[i]=L->date[i-1];
}
L->date[pos-1]=e;
L->length++;//length是几代表有几个元素,从0开始
}
return 1;
}

//删除元素
int deleteElem(int pos,SeqList* L,Elemtype* e){//e用来把删除的元素带出去
if(L->length=0){
printf("empty");
return 0;
}
if(pos>L->length||pos<1){
printf("插入位置错误");
return 0;
}
*e=L->date[pos-1];
if(pos<L->length){
for(int i=pos;i<L->length;i++){
L->date[i-1]=L->date[i];
}
}
L->lengh--;
return 1;
}


//查找数据位置
int findElem(SeqList* L,int e){
for(int i=0;i<L->length;i++){
if(L->date[i]==e){
return i+1;
}
return 0;
}
}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询