顺序表简单的增删改查

1.静态分配

#include <stdio.h>
#include <malloc.h>
#define InitSize 100
typedef struct{
	int data[InitSize];
	//动态分配用Elemtype *data 
	int length;
	
}Sqlist;

2.建表

int InitList(Sqlist *L)
{
	
	L->length=0;
	return 1;
	//动态分配用 L->data=(Elemtype*)malloc(sizeof(ElemType)*InitSize) 
}

3.增

int InsertList(Sqlist *L,int i,int x)
{
	if(i<1||i>L->length+1) {
		printf("数据错误");	
		return 0;	
	}
	int j;
	for(j=L->length;j>=i;j--){
		L->data[j]=L->data[j-1];
	}
	L->data[i-1]=x;
	L->length++;
	return 1;
} 


4.删

int DeleteList(Sqlist *L,int i){
	if(i<1||i>L->length){
	
		printf("数据错误");
		return 0;
}
	for(int j=i;j<L->length;j++){
		L->data[j-1]=L->data[j];
	} 
	L->length--;
	return 1;
}

5.改

int updateList(Sqlist *L,int i,int e){
	if(i<1||i>L->length){
	
		printf("数据错误");
		return 0;
}else{ 
	L->data[i-1]=e;
	return 1;
	}
}

6.查

int findList(Sqlist *L,int e){
	for(int i=0;i<L->length;i++){
		if(L->data[i]==e)
			return i+1;
	}
	printf("没有找到该数");
	return 0;
	
}

7.输出表

void List(Sqlist *L){
	for(int i=0;i<L->length;i++){
		printf("%d",L->data[i]);
	}
}

8.main

int main(){
	Sqlist L;
	InitList(&L);
	printf("* 请输入你要进行的操作:    *\n");
    printf("* 1.读取顺序表中的内容      *\n");
    printf("* 2.插入操作    *\n");
    printf("* 3.删除操作    *\n");
    printf("* 4.查找操作    *\n");
    printf("* 5.修改操作    *\n");
    
	int t;
	int i,e,n;
	while(~scanf("%d",&t)){
		switch(t){
			case 1:
				List(&L);
				break;
			case 2:
				printf("请输入要插入的位置和数");
				scanf("%d%d",&i,&e);
				InsertList(&L,i,e);
				break;
			case 3:
				printf("请输入要删除的位置");
				scanf("%d",&i);
				DeleteList(&L,i);
				break;
			case 4:
				printf("请输入要查找的数") ;
				scanf("%d",&e);
				n=findList(&L,e);
				if(n!=-1){
					printf("%d",n);
				break;
			case 5:
				printf("请输入要修改的位置和数"); 
				scanf("%d%d",&i,&e);
				updateList(&L,i,e);
				break;					
							} 
		}
	}
	return 0;
} 

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值