线性表之顺序表

 没什么说的,顺序表的基本操作,源码如下:

//顺序表的各种算法
#include <stdio.h>
#include <malloc.h>

#define MAXSIZE 50                                             //表大小 
typedef int ElemType;                                          //元素类型 
typedef struct {
	ElemType data[MAXSIZE];
	int length;
}SqList;
//初始化 
void initList(SqList **L){
	*L = (SqList *)malloc(sizeof(SqList));
	if(*L == NULL){
		fprintf(stderr, "初始化失败!\n");
		return ;
	}
	(*L)->length = 0;
}

//销毁
void destroyList(SqList *L){
	free(L);
} 

//判断是否为空表
int emptyList(SqList *L){
	return L->length == 0;
} 

//求表长
int listLength(SqList *L){
	return L->length;
} 

//输出表
void dispList(SqList *L){
	int i;
	
	if(emptyList(L))	return ;
	for(i = 0;i < L->length;i++)
		printf("%d ", L->data[i]);
	printf("\n");
} 

//获取某个元素
int getElem(SqList *L, int i, ElemType *e){
	if(i < 1 || i > L->length)
		return 0;
	
	*e = L->data[i - 1];
	return 1;
} 

//求元素的位置
int locateElem(SqList *L, ElemType e){
	int i;
	
	for(i = 0;i < L->length && L->data[i] != e;i++)
		;
	if(i >= L->length)
		return 0;
	else
		return i + 1;
} 

//插入元素
int listInsert(SqList *L, int i, ElemType e){
	int j;
	
	if(i < 1 || i > L->length + 1)
		return 0;
	for(j = L->length;j >= i;j--)                                 //向后挪一个位置 
		L->data[j] = L->data[j - 1];
	L->data[i - 1] = e;                             				 //插入元素 
	L->length++;												 //表长加一 
	return 1;
	
} 

//删除
int listDelete(SqList *L, int i, ElemType *e){                      //删除后将元素返回给e 
	int j;
	
	if(i < 1 || i > L->length)
		return 0;
	*e = L->data[i - 1];
	for(j = i - 1;j < L->length;j++)
		L->data[j] = L->data[j + 1];                             //删除元素
	L->length--;                                                 //表长减一
	return 1; 
} 

基本操作,如果有人不想打,可以参考参考,呵呵o(* ̄︶ ̄*)o

、、

猜你喜欢

转载自blog.csdn.net/qq_40282585/article/details/80344736