[数据结构]c语言实现线性表中顺序存储中的静态存储结构

练习下数据结构的知识。

#include <stdio.h>
#include <stdlib.h>

#define MaxSize 100 

typedef int ElemType;

/*
  线性表的实现
*/


//存储结构定义  -静态存储结构 
typedef struct {
	ElemType data[MaxSize];
	int length;
}Sqlist;

//初始化结构
void initList(Sqlist *L){
	int i  = 0;
	for(i = 0 ; i < MaxSize ; i++)
		L->data[i] = 0;
	L->length = 0;	
} 

//求表长 
int Length(Sqlist L){
	return L.length; 
}

//按值查找 
int LocateElem(Sqlist L,ElemType e){
	int i = 0;
	for(i = 0 ; i < L.length ; i++){
		if( L.data[i] == e){
			return i + 1;
		}	
	}
	return -1;
}

//插入操作 返回值: 0表示假,1表示真 
int ListInsert(Sqlist *L,int i,ElemType e){
	if(i < 1 || i > L->length + 1){
		return 0;
	}
	if(L->length > MaxSize){
		return 0;
	}
	int j = 0;
	
	for(j = L->length ; j > i - 1 ; j--){
		L->data[j] = L->data[j - 1];
	}
	
	L->data[i-1] =e;
	L->length ++;
	return 1; 
}

//删除操作 返回值: 0表示假,1表示真
int ListDelete(Sqlist *L,int i,ElemType *e){
	if( i < 0 || i > L->length){
		return 0;
	}
	int j  = 0;
	for(j = i ; j < L->length ; j ++){
		L->data[j - 1] = L->data[j];
	}
	L->length--;
	return 1;
}

//判空操作 
int Empty(Sqlist *L){
	return L->length == 0;
}

//输出操作
void PrintList(Sqlist *L){
	int i = 0;
	for(i = 0 ; i < L->length ; i++){
		printf("%d\t",L->data[i]);	
	}
	printf("\n");
} 

int main(int argc, char *argv[]) {
	Sqlist L;
	initList(&L);
	while(1){
		printf("**********线性表实现**********\n");
		printf("\t1.添加元素\n");
		printf("\t2.删除元素\n");
		printf("\t3.查找元素\n");
		printf("\t4.浏览全部元素\n");
		printf("\t5.元素个数\n");
		printf("******************************\n");
		printf("请输入指令:\n");
		int command;
		scanf("%d",&command);
		getchar();
		switch(command){
			case 1:
				printf("请输入要添加的元素值:");
				int e;
				scanf("%d",&e);
				getchar();
				printf("请输入要添加的位置:");
				int index;
				scanf("%d",&index);
				getchar();
				ListInsert(&L,index,e);
				break;
			case 2:
				printf("请输入要删除的位置:");
				scanf("%d",&index);
				getchar();
				if(ListDelete(&L,index,&e) == 1)
					printf("元素%d被删除!\n",e);
				break;
			case 3:
				printf("请输入要查找的元素值:");
				scanf("%d",&e);
				getchar();
				index = LocateElem(L,e);
				printf("你查找的元素%d在%d位置\n",e,index);
				break;
			case 4:
				PrintList(&L);
				break;
			case 5:
				index = 0;
				index = Length(L);
				printf("线性表一共有%d个元素\n",index);
				break;
		}		
	}
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值