线性表-顺序

c语言实现:

#include <cstdio>
#include <cstdlib>

#define INITIAL 100
#define ADD 10
typedef char elemType;

struct List
{
	elemType *elem;     //存储空间基址
	int length;    //目前长度
	int listsize;  //当前已分配的存储容量
}SqList;

void Create(List *L)//构造线性表
{
	(*L).elem = (elemType*)malloc(INITIAL*sizeof(elemType));//malloc所分配的空间是在堆中的
	if ((*L).elem == NULL)
	{
		printf("内存分配失败!");
		exit(1);
	}
	(*L).length = 0;
	(*L).listsize = INITIAL;
}

void Insert(List *L,int loc,elemType data)//在指定位置添加新元素
{
	if ((*L).length==(*L).listsize)
	{
		(*L).elem = (elemType *)realloc((*L).elem, ((*L).listsize+ADD)*sizeof(elemType));
	}
	for (elemType *i = (*L).elem + (*L).length; i > (*L).elem+loc; i--)
	{
		*i = (*i) - 1;
	}
	*((*L).elem + loc) = data;
	(*L).length++;
}

void Show(List L)//输出所有元素
{
	for (elemType *i = L.elem; i < L.elem + L.length; i++)
	{
		printf("%c ", *i);
	}
	printf("\n");
}

void Show_loc(List L, int loc)//输出loc位置的元素
{
	printf("%c\n", *L.elem + loc);
}

void Delete(List *L,int loc)
{
	for (elemType *i = (*L).elem + loc; i< (*L).elem + (*L).length; i++)
	{
		*i = *i + 1;
	}
	(*L).length--;
}
int main(void){

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值