线性表的实现

线性表的实现,第1张

线性表的实现

线性表的实现

线性结构的特点线性表功能实现代码

线性结构的特点

1.存在唯一的一个被称做“第一个”的数据元素。
2.存在唯一的一个被称做“最后一个”的数据元素。
3.除第一个之外,集合中每一个数据元素只有一个前驱。
4.除最后一个之外,集合中的每个数据元素只有一个后继。


线性表功能实现代码

实现功能分别为:尾插数据,头插数据,显示数据,尾删,头插,按位置插入,查找数据,删除数据,清除数据表,销毁数据表

#include 
#include 
#include 	
#define SEQLIST_INIT_SIZE 5 //线性表存储空间的初始分配量 
typedef int ElemType;
typedef struct{
	ElemType *base;			//指向ElemType类型数组指针 
	int listSize;			//数组最大容量 
	int length;				//数组长度	
}SeqList;

void InitSeqList(SeqList *list){
	list->base = (ElemType *)malloc(sizeof(ElemType)*SEQLIST_INIT_SIZE);
	assert(list->base !=NULL);
	list->listSize = SEQLIST_INIT_SIZE;
	list->length = 0;
}

void push_back(SeqList *list,ElemType x){
	if(list->listSize==list->length){
		printf("顺序表已满,不能尾插!n");
		return; 
	}
	list->base[list->length] = x;
	list->length++;
}

void push_front(SeqList *list,ElemType x){
	if(list->listSize==list->length){
		printf("顺序表已满,不能头插!n");
		return; 
	}
	for(int i=list->length;i>0;i--){
		list->base[i] = list->base[i-1];
	}
	list->base[0] = x;
	list->length++;
}

void show_list(SeqList *list){
	for(int i=0;ilength;i++)
	printf("%d ",list->base[i]);
	printf("n");
}

void pop_back(SeqList *list){
	if(list->length==0)
		printf("顺序表为空,不能尾删!");
	list->length--;
}

void pop_front(SeqList *list){
	if(list->length==0)
		printf("顺序表为空,不能头删!");
	for(int i=0;ilength-1;i++){
		list->base[i]=list->base[i+1];
	}
	list->length--;
}

void insert_pos(SeqList *list,int pos,ElemType x){
	if(pos<0||pos>list->length)
		printf("插入位置非法!n");
		return;
	for(int i=list->length;i>pos;i--){
		list->base[i]=list->base[i-1];
	}
	list->base[pos]=x;
	list->length++;
}

int find(SeqList *list,ElemType key){
	for(int i=0;ilength;i++){
		if(list->base[i]==key)
		return i;
	}
	return -1;
}

void delete_value(SeqList *list,ElemType key){
	int pos = find(list,key);
	if(pos == -1){
		printf("要删除的数据不存在.n");
		return;
	}
	for(int i=pos;ilength-1;i++){
		list->base[i] = list->base[i+1];
	}
	list->length--;
}

void clear(SeqList *list){
	list->length = 0;
} 
 
void destroy(SeqList *list){
	free(list->base);
	list->base = NULL;
	list->length = 0;
	list->listSize = 0;
} 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5702894.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存