Simple order table

#include<stdio.h>
//后插法,此处规定一下(当然也可以前插法) 
void insert(int a[],int &len,int index,int x) {
	if(index<0 || index>=len) {
		printf("插入位置非法!\n");
		return;
	}
	for(int i=len;i>=len-index;i--) {
		a[i] = a[i-1];
	} 
	//在第index的索引后面插入,也就是index+1的索引位置插入 
	a[index+1] = x;
	printf("插入成功!\n"); 
	len++; 
}

void del(int a[],int &len,int index) {
	if(index<0 || index>=len) {
		printf("删除位置非法!\n");
		return;	
	}
	
	for(int i=index;i<=len-1;i++) {
		a[i] = a[i+1];
	}
	a[len-1] = 0;
	len--;
}

//打印输出 
void print(int a[],int len) {
	int index=0;
	for(int i=0;i<len;i++) {
		if(index % 10 == 0) printf("\n");
		printf("%d ",a[i]);
		index++;
	}
}
//查找元素,返回下标位置 
int search(int a[], int len, int x) {
	int isok=0;
	int index=0;
	for(int i=0;i<len;i++) {
		if(a[i] == x) {
			isok = 1;
			index = i;
			break;
		}	
	}
	if(isok == 1) return index;
	else return -1;
}

int main() {
	int len;
	int a[100000]={0};
	printf("请输入顺序表的长度:\n");
	scanf("%d",&len);
	printf("请依次输入顺序表的元素:\n");
	for(int i=0;i<len;i++) {
		scanf("%d",&a[i]);
	} 
	int index=0, n=0;
	while(1) {
		printf("1-插入;2-删除;3-数据显示;4-查找\n"); 
		printf("请输入功能代号:\n");
		int fun=0;
		scanf("%d",&fun);
		if(fun == 1) {
			printf("请输入插入的位置,元素(以空格分开):");
			scanf("%d%d",&index, &n); 
			insert(a,len,index,n); 
			printf("插入后的数组为:\n");
			print(a,len);
			printf("\n\n");
		} else if(fun == 2) { 
			printf("请输入删除的位置:");
			scanf("%d",&index); 
			del(a,len,index);
			printf("删除后的数组为:\n");
			print(a,len);
			printf("\n\n");
		} else if(fun == 3) {
			print(a,len);
			printf("\n\n");
		} else if(fun == 4) {
			//system("cls"); 
			printf("请输入要查找的元素:");
			scanf("%d",&index); 
			int x = search(a,len,index);
			if(x != -1) printf("查找到的索引是:%d\n",x);
			else {
				printf("没找到!\n"); 
			}
			printf("\n\n");
		} else {
			printf("没有这个功能!请重新输入!\n");
		} 
	}
	return 0;
} 

 

Published 69 original articles · won praise 22 · views 5990

Guess you like

Origin blog.csdn.net/Kevin__Coder/article/details/105389040