线性表中顺序表的取值 插入 查找 删除 初学者

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
#define ERROR 0
#define OK 1
#define num_stop -1
#define OVERFLOW -2
#define lon  10
typedef int ElemType; //将ElemType 定义为int类型
typedef int Status;   //将Status 定义为 int类型
/*typedef int Status 之后
	Status  a = int a */
//定义顺序存储结构
typedef struct
{
	ElemType *elem; //储存空间基地址
	int length;    //当前长度
} SqList  ;
//初始化线性表
Status InitList_Sq (SqList &L)
{
	int i;
	L.elem = (ElemType*)malloc(lon*sizeof(ElemType));
	if(!L.elem) exit (OVERFLOW);
	L.length = 10;
	return OK;
}

//顺序表的取值
Status GETElem(SqList L,int i,ElemType &e)
{
	
	if (i < 1 || i > L.length )
		return ERROR;   //判断i值是否合理
	e=L.elem[i-1];
	return OK;`在这里插入代码片`
}
//查找
int LocateElem(SqList L,ElemType e,ElemType &q)
{
	int i;
	for (i = 0; i < L.length; i++ )
	{
	if (L.elem[i] == e)
		q=i+1;
	}
	return OK;
}
//顺序表的插入
Status ListInsert(SqList &L,ElemType e,ElemType i)
{
	int j;
	if((i < 1) || (i > L.length+1))
		return ERROR;
	if (L.length == MAXSIZE)  return ERROR;
	for(j = L.length-1;j >=i-1;j--)
	{
		L.elem[j+1] = L.elem[j];
		
	}
	L.elem[i-1] = e;
	L.length++;
	return OK;
}
//删除
	Status ListDelete(SqList &L,ElemType i)
	{
		int j;
		
		if((i < 1) || (i > L.length+1))
		return ERROR;
		for(j = i;j <= L.length-1;j++)
			L.elem[j-1] =L.elem[j];
		--L.length;
		return OK;
		
	}
	Status see(SqList &L)
	{
		int i; 
		printf("当前数值为:");
		for (i=0;i<lon;i++)
			printf("%6d",L.elem[i]);
			printf("\n");
		return OK;
	}
	int main()
	{
		SqList L;
		int k,i,m=1;
		ElemType e,q;
		if(InitList_Sq(L))
		printf("构造成功\n");
		for(i = 0;i < L.length;i++)
		{
			L.elem[i] = i;
			printf("%6d",L.elem[i]);
	}
		printf("\n");
		
		
		while(m)
		{
			printf("1.取值\n2.查找\n3.插入\n4.删除\n5.退出\n");
		printf("请选择数字操作");
			scanf("%d",&k);
		switch(k)
		{
		case 1:		printf("请输入位置(1-10)");
					scanf("%d",&i);
					GETElem(L,i,e) ;
					printf("此处的值为:%d",e);
					printf("\n");
					break;
		case 2:		printf("请输入要查找的数值");
					scanf("%d",&e);
					LocateElem(L, e ,q);
					printf("%d是第%d个元素",e,q);
					printf("\n");
					break;
		case 3:     printf("请输入要插入的位置");
					scanf("%d",&i);
					printf("请输入要插入的数值");
					scanf("%d",&e);
					ListInsert(L,e,i);
					for(i = 0;i < L.length;i++)
					printf("%6d",L.elem[i]);
					printf("\n");
					printf("插入成功!");
					printf("\n");
					break;
		case 4:  printf("请输入要删除的位置");
				scanf("%d",&i);
				ListDelete(L,i);
				for(i = 0;i < L.length;i++)
					printf("%6d",L.elem[i]);
					printf("\n");
				printf("删除成功!");
				printf("\n");
				break;
		case 5:m=0;
		}
		}
		return 0;
		

	}


		
	
	


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值