2020考研数据结构 顺序表的插入删除及逆置

比昨天写的有所改进。开心.jpg

#include<stdio.h>
#include<malloc.h>
#define maxSize 10
//typedef int ElemType
 typedef struct Sqlist
{	
	int data[maxSize];
	int length;
	
}Sqlist;
//插入函数
bool ListInsert(Sqlist &L,int i,int e ) //将元素e插入到顺序表L的第i个位置,因为顺序表是从第1个位置开始算起的,而数组是0开始,即第i个位置是a[i-1] 
 {
 	if(i<1||i>L.length+1||i>maxSize)//加一是可以插入到顺序表的尾部 
 		return false;
 	for(int j=L.length;j>=i;j--)//j=i是指从i的包括i的元素往后移
	  	L.data[j]=L.data[j-1];
	L.data[i-1]=e;
	++L.length;
	printf("长度%d\n",L.length);
	return true; 
	
 	
 }
 //删除函数 
 bool  ListDelete(Sqlist &L,int i,int e)//删除顺序表L中的第i个元素,成功返回true,将删除的元素用e返回,否则false 
 {
 	if(i<1||i>L.length||i>maxSize)//非法操作 
 		return false;
 	e=L.data[i-1];
	for(int j=i;j<L.length;j++) 
		L.data[i-1]=L.data[i];
	L.length--;
 	return true;
 	
  } 
  //根据所查找的元素是否在顺序表中,并且返回对应的数组下标
  int findIDByELem(Sqlist &L,int e) 
  {
  	for(int i=0;i<L.length;i++)
  	{
  		if(L.data[i]==e)
  			return i;
	  }
	  return -1;//返回-1代表没找到 
  }
  //输出顺序表 
  int display(Sqlist &L){
  		for(int i=0;i<L.length;i++)
  		{
  			printf("第%d的元素为:%d\n",i+1,L.data[i]);
  			
		  }
  } 
   
   /**
   	删除最小元素的值,并且返回其值
	    
   */
   int deleteMinElem(Sqlist &L)
   {
   		int min=L.data[0];//先设置最小的元素为首元素
   		int locateElem;
   		if(L.length<0)
   		return 0;
		for(int i=0;i<L.length;i++) 
		{
			if(min>L.data[i])
				min=L.data[i];
				locateElem=i;
		}
		ListDelete(L,locateElem,min);
		return locateElem;
		  
		  
		   
   } 
  
	/*逆置函数
	例如1
	1 12 35 38 12 29 41
	41 29 12 38 35 12 1*/ 
	void reverseELem (Sqlist &L)
	{
		int i;
		int j=L.length-1; 
		int temp=0;
		for(i=0;i<=j;i++,j--)
		{
			temp=L.data[i];
			L.data[i] =L.data[j];
			L.data[j]=temp;
		}
		
	}
int main()
{

	 Sqlist L;
	 int n;
	 printf("顺序表要输入的个数:");
	 scanf("%d",&n);
	 printf("\n");
	 L.length=n;
	 for(int i=0;i<n;i++){
	 	printf("输入第%d个元素:",i+1);
	 	scanf("%d",&L.data[i]);
	 }
   		 
    printf("之前的元素:\n"); 
	display(L);
	printf("删除元素支后\n");
	ListDelete(L,2,21);
	display(L);
	printf("逆置函数之后\n") ;
	reverseELem(L) ;
	display(L);
	printf("插入元素\n");//插入周有元素 
	ListInsert(L,3,20);
	 display(L);
	
	return 0;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值