顺序表的创建,插入,删除

#include<stdio.h>
#include <malloc.h>
typedef struct SeqList* PSeqList;
struct SeqList          //定义线表
{
	int MAX;			//顺序表中最大元素的个数 MAX
	int n;			//存放线表中元素的个数n < MAX
	double* element;//定义顺序表的首地址 *element
};

//创建空顺序表
PSeqList ChuangjianList(int m)			//参数m是创建的顺序表的大小,即MAX=m
{
	//先为线表申请一个struct SeqList大小的空间
	PSeqList list = (PSeqList)malloc(sizeof(struct SeqList));
	if (list != NULL)		//如果顺序表list不为空,才能操作
	{
		list->element = (double*)malloc(sizeof(int) * m);//给element分配一个m大小的空间
		if (list->element)	//当指针指向线表的首地址时
		{
			list->MAX = m;		//
			list->n = 0;
			return list;
		}
		else free(list);
	}
	printf("线表申请失败!");
	return NULL;
}

//线表的插入
int Charulist(PSeqList list, int p, int x)//定义函数(插入的线表,插入的位置,插入的元素)
{
	int q;								//定义
	if (list->n > list->MAX)				//判断线表元素是否已满
	{
		printf("线表溢出!");
		return 0;
	}
	if (p<0 && p>list->MAX)				//判断要插入的位置是否已经大于线表的最大长度
	{	
		printf("位置无效!");
	}
	else                                //如果都满足以上两个条件
	{
		for (q = list->n - 1; q >= p; q--)	//插入的位置以及之后的元素均要后移一个位置
		{
			list->element[q + 1] = list->element[q];
		}
		list->element[p] = x;				//把p的位置给插入的元素,即插入元素x
		list->n = list->n + 1;			//总的元素个数加1
		return 1;						//返回1表示插入元素成功
	}
}

//删除元素
int ShanchuList(PSeqList list, int p)//函数的格式(删除下标所在线表,删除的下标)
{
	int q;
	if (q<0 && q>list->MAX)			//判断删除的下标是否存在
	{
		printf("删除的下标不存在!");
		return 0;
	}
	for (q = p; p < list->n - 1; q++)	/*如果下标存在,从所需要删除的下标起,让数组元素的
																	后一个代替前一个*/
	{
		list->element[q] = list->element[q + 1];
	}
	list->n = list->n - 1;			//因为有一个元素被删除,数组中的元素需要减去1
	return 1;
}

PS:在此线表即顺序表

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值