线性表-顺序表

线性表的顺序存储结构是指用一段地址连续的存储单元存储数据

/*
*顺序存储结构可以用数组
*/
#include<stdio.h>
#define MAXSIZE 20 //存储空间初始分配量
//结点
typedef struct
{
	int data[MAXSIZE];//数组,存储数据元素(数据域)
	int length;//线性表当前长度
}Sqlist;

/*初始化顺序表*/
void init_list(Sqlist *L)
{
	L->length = 0;
}
/*判断顺序表是否为空*/
int list_empty(Sqlist*L)
{
	if(L->length==0)
		return 0;
	else
		return 1;
}
/*顺序表的清空*/
void list_clear(Sqlist*L)
{
	L->length=0;
}
//头插法
void list_insert(Sqlist*L,int i,int e)
{
	if(L->length==MAXSIZE)//如果顺序表已满
		return;
	if(i<1||i>L->length+1)
		return;
	if(i<=L->length)//如果插入的元素不在表尾
	{
		for(int k=MAXSIZE-1;k>i-1;k--)
		{
			L->data[k]=L->data[k-1];
		}
	}
	L->data[i-1]=e;
	L->length++;
}
int get_elem(Sqlist*L,int i)
{
	int e;
	e=L->data[i-1];
	return e;
}
void list_delete(Sqlist*L,int i)
{
	if(L->length==0)
		return;
	if(i<1||i>L->length)
		return;
	if(i<L->length)
	{
		for(int k=i;k<L->length;k++)
		{
			L->data[k-1]=L->data[k];
		}
	}
	L->length--;
}
void list_show(Sqlist*L)
{
	printf("顺序表的元素:");
	for(int i=0;i<L->length;i++)
		printf("%2d",L->data[i]);
}
int main()
{
	int i;
	Sqlist L;//创建一个顺序表
	init_list(&L);
	printf("初始化后的线性表长度length:%d\n",L.length);
	//插入1-5
	printf("插入1-5:\n");
	for(int j=1;j<=5;j++)
	{
		list_insert(&L,1,j);
	}
	
	//判断顺序表是否为空
	printf("判断顺序表是否为空(空为0,反之为1):");
	i=list_empty(&L);
	printf("%d\n",i);
	
	//获取顺序表中的第i个元素
	i = get_elem(&L,4);
	printf("输出第i个元素:%d\n",i);
	//删除顺序表中的第j个元素
	list_delete(&L,2);
	//输出元素
	list_show(&L);
	//清空顺序表
	list_clear(&L);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值