C语言实现顺序表基本操作

1.顺序表初始化

2.顺序表创建

3.求顺序表的长度

4.判断顺序表是否为空

5.向顺序表中插入元素

6.删除顺序表中元素

7.将顺序表翻转

8.将顺序表降序排序

#include<stdio.h>
#define MAXSIZE 100//定义顺序表的最大存储个数
typedef struct SqList
{
	int *base;
	int length;
 } SqList;//定义一个顺序表类型
 void InitList(SqList &L)
 {
 	L.base=new int[MAXSIZE];//为顺序表分配一个大小为MAXSIZE的空间
	 if(!L.base)//分配成功是!L.base为0;不执行 
	 printf("分配失败\n");
	 L.length=0;
 }
 void CreatList(SqList &L)
 { int n;
 	printf("你想要输入的元素个数为:\n");
 	scanf("%d",&n);
 	if(L.length>MAXSIZE)
 	printf("顺序表已满,不能输入\n");
 	printf("请输入元素\n");
 	for(int i=0;i<n;i++)
 	{
 		scanf("%d",&L.base[i]);
 		L.length++;
	 }
 }
 void ListLength(SqList &L)
 {  printf("当前顺序表的长度为:\n");
 	printf("%d\n",L.length);
 }
 void IsEmpty(SqList &L)
 {
 	if(!L.length)
 	printf("当前顺序表为空\n");
 	else
 	printf("顺序表不为空\n");
 }
 void ShowList(SqList &L)
 {  printf("当前顺序表中的元素为"); 
 	if(!L.length)//L.length==0时执行!L.length 
 	printf("单链表为空\n");
 	for(int i=0;i<L.length;i++)
 	{
 		printf("%d ",L.base[i]);
	 }
	 printf("\n");
 }
 void Insert(SqList &L)
 { if(L.length>MAXSIZE)
   {
 	printf("数组已满\n");
   }
 else
   {
   int pos=0;//定义变量来存储想要插入的元素的位置
   int e=0;//定义变量来存储想要插入的元素
   printf("你想要插入的位置和元素是:\n");
   scanf("%d%d",&pos,&e);
   if(pos<1||pos>L.length+1)
   printf("插入位置错误\n");
   else
   {
   for(int i=L.length;i>=pos;i--)
   {
   	L.base[i]=L.base[i-1];//将想要插入位置以后的元素往后移一个单位 
   }
   L.base[pos-1]=e;//将元素插入位置为pos的地方 
   L.length++;
   }
}
}
 void DeleteList(SqList &L)
 {  int pos=0;//定义变量来存储想要删除的元素位置 
 	printf("你想要删除的元素位置为:\n");
 	scanf("%d",&pos);
 	if(pos<1||pos>L.length)
 	printf("位置错误\n");
 	else
 	{
 		for(int i=pos-1;i<L.length;i++)
 		{
 			L.base[i]=L.base[i+1];//从要删除的位置开始将后面元素前移 
		 }
		 L.length--; 
	 }
 }
 void Reverse(SqList &L)
 {  printf("将顺序表中的元素倒置:\n");
 	int i=0;
 	int j=L.length-1;
 	while(i<j)
 	{
 		int t=L.base[i];
 		L.base[i]=L.base[j];
 		L.base[j]=t;
 		i++;
 		j--; 
	  } 
 }
 void SortList(SqList &L)
 {
 	for(int i=0;i<L.length;i++)
 	{
 		for(int j=i+1;j<L.length;j++)
 		{ if(L.base[i]<L.base[j])
 		   {
 			 int t=L.base[i];
 			 L.base[i]=L.base[j];
 			 L.base[j]=t;
		    }
		 }
	 }
 }//降序排列 
 int main() 
 {
 	SqList L;//定义一个顺序表
	 InitList(L);
     printf("初始化成功\n");
     CreatList(L);
     printf("创建成功\n");
     ShowList(L);
     Insert(L);
     ShowList(L);
     DeleteList(L);
     ShowList(L);
     Reverse(L);
     ShowList(L);
     SortList(L);
     ShowList(L);
     IsEmpty(L);
     ListLength(L);
     return 0;
 }

运行结果如图:

  • 5
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值