ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

顺序表的增删改查

2021-11-18 21:00:08  阅读:104  来源: 互联网

标签:顺序 return int 改查 elem length ERROR 增删


#include<stdio.h>
#define ERROR 0
#define OK 1
typedef int Status; 
typedef int ElemType; 

//---------顺序表的存储结构 ------------
#define MAXSIZE 100 		//顺序表可能达到的最大长度 
typedef struct
{
	ElemType *elem;			//存储空间的基地址 
	int length ;			//当前长度 
 } SqList ;					//顺序表的结构类型为 SqList
 
//1.---------顺序表的初始化 --------
 Status InitList(SqList &L )
 {//构造一个空的顺序表L
 	L.elem = new ElemType[MAXSIZE];	//为顺序表分配一个大小为 MAXSIZE的数组空间
 	if(!L.elem) 
 	return ERROR;					//存储分配失败退出 
 	L.length =0 ;					//空表长度为 0 
 	return OK;
 }
 
//2.---------顺序表的插入 --------
 Status ListInsert(SqList &L,int i,ElemType e)
 {//在顺序表L中第i个位置插入新的元素e,i值合法的范围是1<=i<=L.length+1
 if((i<1)||(i>L.length+1)) 
 {printf("溢出了!"); //i值不合法 
 return ERROR;}				
 if(L.length==MAXSIZE){//当前存储空间已满 
 	printf("满啦!"); 
 	return ERROR;}
 for(int j=L.length-1;j>=i-1;j--)
 {L.elem[j+1]=L.elem[j];}		//插入位置及之后的元素后移
 L.elem[i-1]=e;					//将新元素e放入第i个位置
 ++L.length;					//表长加 1
 }
 
//3.---------顺序表的取值 --------
 Status GetElem(SqList L,int i,ElemType &e) 
 {
 	if (i<1||i>L.length)
 	return ERROR;				//判断i值是否合理,若不合理,返回ERROR
	 e= L.elem[i-1];			//elem[i-1]单元存储第i个数据元素 
	 return OK; 
 }
 
//4.---------顺序表的查找 --------
 int LocateElem(SqList L,ElemType e)
 {//在顺序表L中查找值为e的数据元素,返回其序号 
 for(int i=0;i<L.length;i++)
 	if(L.elem[i]==e)
 	return i+1;			//查找成功,返回序号i+1
	 return 0;			//查找失败,返回0 
 }
 
//5.---------顺序表的删除--------
  Status ListDelete(SqList &L,int i)
  {//在顺序表L中删除第i个元素,i值的合法范围是1<=i<=L.length
   if((i<1)||(i>L.length))
   return ERROR;			//i值不合法
   for(int j=i;j<=L.length-1;j++)
   L.elem[j-1]=L.elem[j];				//被删除元素之后的元素前移
   --L.length;							//表长-1
   return OK;
  }
//6.-----------顺序表的输出----------- 
  void print(SqList &L) { 
  	for(int i =0;i<L.length;i++){
  		printf("%d  ",L.elem[i]);
	  }
	  printf("\n");
  }
int main()
  {
  	SqList La;
  	int i=2,n=0,m,x;
  	int e=0;
  	int b = InitList(La);		//初始化La 
  	if(b==1)
  	printf("初始化成功!\n");
  	else
  	printf("初始化失败!\n");
  	
  	printf("请输入元素个数=? ");  //插入元素 
	scanf("%d",&n);
    for(i=1;i<=n;i++) 
	{	printf("i=%d\n",i);
		scanf("%d",&e);
	 	m=ListInsert(La,i,e);
	    if(m==0)printf("插入失败!\n");
		}
	printf("输出当前顺序表:");
	print(La);					//输出当前顺序表 
	 
	 
	printf("输入要插入的位置:");
	scanf("%d",&i);
	printf("输入插入的数字:"); 	//插入元素 
	scanf("%d",&e);
	m=ListInsert(La,i,e);
		if(m==0)printf("插入失败!\n");
  	printf("输出当前顺序表:");
	print(La);		
	 
  	printf("你要取的位置?") ;
  	scanf("%d",&i);
  	GetElem(La,i,e) ;	 		//取值 
  	printf("取值为:%d\n",e);
    
    printf("你要取的值?") ;		 
  	scanf("%d",&i);
    x=LocateElem(La,i);				//找位置
    printf("位置为:%d\n",x);
    
    printf("你要删除的位置是?");
    scanf("%d",&i);
  	b=ListDelete(La,i);
  	if(b==1)
  	printf("删除成功!\n");
  	else
  	printf("删除失败!\n");
  	printf("输出当前顺序表:");
  	print(La);					//输出当前顺序表 
}
 

标签:顺序,return,int,改查,elem,length,ERROR,增删
来源: https://www.cnblogs.com/llllzjdbky/p/15574253.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有