栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

线性表的实现

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

线性表的实现

线性表的实现

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

线性结构的特点

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;
} 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/702788.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号