实现线性表的基本操作

经过自己的一番努力,也是实现了线性表的基本操作,所以在这里分享给大家。如果大家有更好的方法,欢迎评论!

首先说以下感受,实现线性表的过程我觉得并不是很难,算法也都是很简单的算法,要说难点的话就是指针与结构了。因为如果不知道指针与结构的话,根本无从下手。当然了,我的博客中也有关于指针与结构的总结,欢迎大家观看!

废话不说了,给大家代码。

//线性表有关操作:初始化线性表、向线性表插入数据、从线性表中删除数据,删除l中第i个元素并返回给e、
//查询线性表,将l中第i个元素返回给e、显示线性表

#include<stdio.h>
#define ok 1
#define false 0
#define maxsize 10

//定义线性表的结构
typedef struct{
	int list[maxsize];
	int length;
}seqlist;                

//1、初始化线性表
int initseqlist(seqlist *l){
	l->length=0;
	return ok;
} 

//2、向线性表插入数据
int listinsert(seqlist *l,int i,int e){
	int k;
	if(i>l->length+1||i<1||i>maxsize){
		return false;
	}
	if(i<=l->length){
		for(k=l->length-1;k>=i-1;k--){
			l->list[k]=l->list[k-1];
		} 
	}
	l->list[i-1]=e;
	l->length++;
	return ok;
}

//3、从线性表中删除数据,删除l中第i个元素并返回给e
int listdelete(seqlist *l,int i){
	int result;
	int k;
	if(i<1||i>l->length){
		return false;
	}
	
	if(i<l->length){
		result= l->list[i-1];
		for(k=i-1;k<=l->length-2;k++){
			l->list[k]=l->list[k+1];
		}
	}
	l->length--;
	return result; 
}

//4、查询线性表,将l中第i个元素返回给e
int getelem(seqlist *l,int i){
	int *e;
	if(i<1||i>l->length){
		return false;
	}
	e=&l->list[i-1];
	return *e;
}

//5、显示线性表
void seelist(seqlist *l){
	int i;
	for(i=0;i<l->length;i++){
		printf("%d	",l->list[i]);
	}
}

//进行测试
void main(){
	int data;
	seqlist list1;
	//初始化线性表 
	printf("结果为1,证明初始化线性表成功:"); 
	int result = initseqlist(&list1);
	printf("%d\n",result);
	
	//将1,2,3,4,5   5个值插入线性表中 
	printf("对线性表进行插入\n"); 
	for(data=1;data<=5;data++){
		listinsert(&list1,data,data*2);
	}
	printf("查看线性表:");
	seelist(&list1);
	
	//对线性表进行删除操作
	int result2 = listdelete(&list1,3); 
	printf("\n");
	printf("被删除的元素为:%d\n",result2);
	printf("查看线性表:");
	seelist(&list1);
	printf("\n"); 
	int result3 = getelem(&list1,3);
	printf("查询线性表中的指定元素,%d",result3);
} 

还有一个关于“->”与“.”的区别:如果是指针的话,就要用“->”来引用变量;如果是变量的话,就用“.”来引用变量。

以上就是我的代码,谢谢大家的观看,如果有问题欢迎评论,我会及时改正。

猜你喜欢

转载自blog.csdn.net/weixin_42617472/article/details/82791031