顺序表简单的增删改查

1.静态分配

#include 
#include 
#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;jlength;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;ilength;i++){
		if(L->data[i]==e)
			return i+1;
	}
	printf("没有找到该数");
	return 0;
	
}

7.输出表

void List(Sqlist *L){
	for(int i=0;ilength;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;
} 

顺序表简单的增删改查_第1张图片

你可能感兴趣的:(顺序表简单的增删改查)