数据结构线性表

#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 10 //顺序表的最大单位。
typedef struct SqList{
int *elem;//顺序表的储存首地址。
int length;//顺序表当前的实际个数。
}Sqlist;//进行函数的声明,当函数的实现放在mian函数的后面时,需要函数的声明进行初始化
//初始化顺序表,由于顺序表的本身修改操作,所以需要地址传递的方式实现。
bool initList_Sq(SqList *L);
bool isEmpty_Sq(SqList L);//读取数据操作,值传递。
bool ifull_Sq(SqList L);
int getLength_Sq(Sqlist L);//获取顺序表的长度 .
int getElem_Sq(SqList L,int i);//把顺序表的第i个元素返回。
int locateElem_Sq(SqList L,int e);//查找元素e,并返回e的下标返回。
void showList_Sq(SqList L);//显示顺序表中的元素
bool inserElem_Sq(SqList *L,int pos,int e);//在顺序表中插入元素
bool deIiElem_Sq(SqList *L,int pos ,int e);//在顺序表指定位置删除元素
bool append_Sq(SqList *L,int e);
int main(void)
{
SqList s1;
bool b=false;
int length=0;
b=initList_Sq(&s1);
if(b)
printf("顺序表初始化成功");
else 
printf("顺序表初始化失败");
printf("\n");
length=getLength_Sq(s1);
printf("顺序表的长度为: %d\n",length);
printf("插入前的元素如下:\n");
append_Sq(&s1,20);
append_Sq(&s1,78);
append_Sq(&s1,4);
append_Sq(&s1,86);
append_Sq(&s1,49);
append_Sq(&s1,12);
showList_Sq(s1);
b=inserElem_Sq(&s1,2,90);
if(b)
printf("插入元素成功!\n");
printf("插入后顺序如下:\n");
showList_Sq(s1);
b=deIiElem_Sq(&s1,3,78);
if(b)
printf("删除元素成功!\n");
printf("删除后元素为:\n");
showList_Sq(s1);

return 0;
}
bool initList_Sq(SqList *L)
{
L->elem=(int *)malloc(sizeof(int )*MAXSIZE);//L指向了顺序表
if(L->elem==NULL)
{
printf("内训分配失败");
return false;
}
L->length=0;
return true;
}
int getLength_Sq(SqList L)
{
return L.length;


}
void showList_Sq(SqList L)
{
for(int i=0;i<L.length;i++)
printf("%d",L.elem[i]);
printf("\n");

}
bool append_Sq(SqList *L,int e)
{
if(L->length==MAXSIZE)
return false;
L->elem[L->length]=e;
L->length++;
return true;
}
bool inserElem_Sq(SqList *L,int pos,int e)
{
if(pos<1||pos>L->length)
return false;
if(L->length==MAXSIZE)
return false;
for(int i=L->length-1;i>=pos-1;i--)
L->elem[i+1]=L->elem[i];
L->elem [pos-1]=e;
L->length++;
return true;
}
bool deIiElem_Sq(SqList *L,int pos ,int e)
{
if(pos<1||pos>L->length )
return false;
for(int i=pos;i<=L->length ;i++)
L->elem [i-1]=L->elem [i];
L->length --;
}







  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值