顺序表动态分配,数据元素类型为整型,大学基础数据结构

顺序表动态分配,数据元素类型为整型

大学基础数据结构

#include <stdio.h>
#include <crtdbg.h>
#include <corecrt_malloc.h>
typedef int Elemtype;
#define Init_SqL_dyn_size 10
#define add_size 10
typedef struct SqList_dynamic {//动态顺序表
	Elemtype* data;//指向元素数据数组的指针
	int len;//表长
	int Maxsize;//最大长度
}SqL_dyn;

bool Init_SqL_dyn(SqList_dynamic& L) {//初始化
	L.data = (Elemtype*)malloc(sizeof(Elemtype)*Init_SqL_dyn_size);//用malloc分配空间然后用data指向
	L.len = 0;
	L.Maxsize = 0;
}

bool SqL_dyn_size_add(SqList_dynamic& L) {//表满了添加表长一次添加长度为add_size
	Elemtype* p;//创建元素数据类型的临时指针
	p = (Elemtype*)malloc(sizeof(Elemtype) * (Init_SqL_dyn_size + add_size));//重新申请内存空间
	for (int i = 0; i < L.len; i++) {//将以前的数据迁移到新申请的空间上
		p[i] = L.data[i];
	}
	L.data = p;//将临时指针给L.data
	free(p);//释放临时指针
	L.Maxsize = L.len + add_size;
}

bool SqL_dyn_search_by_loc(SqList_dynamic L,int i,Elemtype&e) {//按位置查找并返回
	if (i<0 || i>L.len)	return false;
	e = L.data[i - 1];
}

bool SqL_dyn_search_by_val(SqList_dynamic L, Elemtype e, int* arr) {//按值查找并用数组返回位序
	for (int i = 0,j=0; i < L.len; i++) {
		if (e == L.data[i]) {
			arr[j] = i + 1;
			j++;
		}
	}
}

void Print_SqL_dyn(SqList_dynamic L) {//打印顺序表
	printf("\n");
	for (int i = 0; i < L.len; i++) {
		printf("%d ", L.data[i]);
	}
	printf("\n");
}

bool SqL_dyn_insert(SqList_dynamic& L,int i,Elemtype e) {//按位置增加
	if (i<1 || i>L.len + 1)	return false;
	if (L.len = L.Maxsize)	SqL_dyn_size_add(L);//如果表满了扩容
	for (int j = L.len; j >= i; j--) {
		L.data[j] = L.data[j - 1];
	}
	L.data[i - 1] = e;
	L.len++;
}

bool SqL_dyn_delet(SqList_dynamic& L, int i,Elemtype &e) {//按位置删除,返回删除值
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值