#include<stdio.h>
#define MaxSize 10
typedef struct{
int data[MaxSize]; //用静态的"数组"存放数据元素
int length;
}SqList;
void InitList(SqList &L){
L.length=0;
}
bool ListInsert(SqList &L, int i,int e){
if(i<1||i>L.length+1){
return false;
} //判断i的范围是否有效
if(L.length>=MaxSize){
return false;
} //当前存储空间已满,不能插入
for(int j=L.length;j>=i;j--){
L.data[j]=L.data[j-1];
} //将第i个元素及之后的元素后移
L.data[i-1]=e; //在位置i处放入e
L.length++; //长度+1
return true;
}
bool ListDelete(SqList &L,int i,int &e){
if(i<1||i>L.length){
return false;
} //判断i的范围是否有效
e=L.data[i-1]; //将被删除的元素赋值给e
for(int j=i;j<L.length;j++){
L.data[j-1]=L.data[j];
L.length--; //线性表长度
return true;
}
}
int GetElem(SqList L,int i){
return L.data[i-1]; //返回值
} //按位查找
int LocateElem(SqList L,int e){
for(int i=0;i<L.length;i++){
if(L.data[i]==e){
return i+1; //返回位序
}
}
return 0;
} //按值查找
int main(){
SqList L;
InitList(L);
ListInsert(L,1,5);
ListInsert(L,2,8);
ListInsert(L,3,9);
printf("按位查找的值=%d\n",GetElem(L,2));
printf("按值查找的位序=%d\n",LocateElem(L,9));
int e=-1;
if(ListDelete(L,3,e))
printf("已删除第3个元素,删除元素值=%d\n",e);
else
printf("位序i不合法,删除失败\n");
free(L);
return 0;
}
数据结构(顺序表增删改代码)
于 2024-03-12 16:42:26 首次发布
本文详细介绍了如何使用C语言实现一个简单的顺序存储列表(SqList),包括初始化、插入、删除以及元素查找功能,展示了基本的链表操作实现过程。
摘要由CSDN通过智能技术生成