欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

顺序表简单的增删改查

程序员文章站 2022-05-08 08:45:38
...

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;
} 

顺序表简单的增删改查