#include <stdio.h>
#define MaxSize 50
typedef int ElementType;
//静态分配(动态分配的有指针域必须要写名字,静态分配有别名可以不写名字)
typedef struct
{
int length;
ElementType data[MaxSize];
}SqList;
bool ListInsert(SqList &L,int i,ElementType e)
{
if(i<1||i>L.length)
{
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[i-1]=e;
L.length++;
return true;
}
bool ListDelete(SqList &L,int i,ElementType &del)
{
if(i<1||i>L.length)
{
return false;
}
del=L.data[i-1];
for (int j = i; j <L.length ; j++) {
L.data[j-1]=L.data[j];
}
L.length--;
return true;
}
int ListSelect(SqList L,ElementType e)
{
//序号从1开始,所以未找到return 0;
for (int j = 0; j <L.length ; j++) {
if(L.data[j]==e)
{
return j+1;
}
}
return 0;//未找到
}
void PrintList(SqList L)
{
for (int i = 0; i < L.length; i++) {
printf("%3d",L.data[i]);
}
printf("\n------------\n");
}
int main() {
SqList L;//定义一个表
bool ret;
L.data[0]=1;
L.data[1]=2;
L.data[2]=3;
ElementType e=60;//插入的元素的值
L.length=3;//设置表的长度
int i=2;//设置插入位置
ret= ListInsert(L,i,e);
if(ret)
{
printf("---insert success----\n");
PrintList(L);
} else{
printf("---insert failed----");
}
i=1;//删除的元素序号
ElementType del;
ret= ListDelete(L,i,del);
if(ret)
{
printf("---delete success e=%d----\n",del);
PrintList(L);
} else{
printf("---delete failed----");
}
e=3;//查找有没有3
int index= ListSelect(L,e);
if(ret)
{
printf("---select success e=%d index is %d-----\n",e,index);
} else{
printf("---select failed----");
}
return 0;
}
C:数据结构(顺序链表增删查改)
于 2024-03-11 20:31:19 首次发布