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

数据结构顺序表动态数组初始化、增、删、改、查【纯C语言】非类C、C++

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

数据结构顺序表动态数组初始化、增、删、改、查【纯C语言】非类C、C++

#include 
#include 
#include 
#include 
#define MaxSize 10  //默认的最大长度
typedef struct {
	int* elem;      //指示动态分配数组的指针
	int length;     //顺序表的当前容量
	int listsize;   //顺序表的最大容量
}Sqlist;
//初始化动态顺序表,用malloc函数申请一片连续的存储空间
//参数L:Sqlist类型的指针
void initSqlist(Sqlist* L) {
	L->elem = (int*)malloc(MaxSize * sizeof(int));
	L->length = 0;
	L->listsize = MaxSize;
}
//向顺序表中插入元素
//参数L:Sqlist类型的指针
//参数i:插入元素的位置
//参数item:插入元素
void InsertElem(Sqlist* L, int i, int item) {
	
	int* base, * insertPtr, * p;
	if (L->length>=L->listsize)
	{
		base = (int*)realloc(L->elem, (L->listsize + 10) * sizeof(int));
		L->elem = base;
		L->listsize = L->listsize + 1;
	}
    insertPtr = &(L->elem[i - 1]);
	for (p = &(L->elem[L->length-1]); p>= insertPtr; p--)
		*(p + 1) = *p;
		*insertPtr = item;
		L->length++;
}
//从顺序表中删除元素
//参数L:Sqlist类型的指针
//参数i:删除元素的位置
void DelElem(Sqlist* L, int i) {
	
	int* delItem, * q;
	delItem = &(L->elem[i - 1]);
	q = L->elem + L->length - 1;
	for (++delItem; delItem <= q; ++delItem)*(delItem - 1) = *delItem;
	L->length--;
}
int main()
{
	Sqlist l;                //声明一个顺序表
	int i;
	initSqlist(&l);         //初始化顺序表,
	for (i = 0; i < 15; i++)
    InsertElem(&l, i + 1, i + 1);
	printf("nThe content od the list is n");
	for (i = 0; i < l.length; i++)
		printf("%d ", l.elem[i]);
	DelElem(&l, 5);
	printf("nDelete the fifth element n");
	for (i = 0; i < l.length; i++)
		printf("%d ", l.elem[i]);
}
//(⑴程序首先用函数initSqlist()动态地创建了一个顺序表,起初始化长度为MaxSize 10。
//(2)然后通过函数InsertElem()动态地向顺序表中插入数据。这里通过一个循环,每次向顺序表的第+1的位置插入整数i+1。然后打印出该顺序表中的值。在插入顺序表的过程中,由于顺序表初始化长度为10,而要插入15个元素,因此要调用realloc()函数为顺序表重新分配内存空间。
//(3)再应用DelElem(函数删除表中第5个元素,也就是5。
//(4)最后打印出删除元素后该顺序表中的值。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/938617.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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