数据结构--线性表、广义表

本文介绍了线性表的概念,包括其顺序存储和链式存储的实现方式,详细阐述了线性表的插入、删除操作。接着探讨了广义表,它是线性表的推广,元素可以是单元素或另一个广义表。最后,讨论了多重链表,解释了其在复杂数据结构如树、图存储中的应用,并以十字链表为例展示了如何存储稀疏矩阵。
摘要由CSDN通过智能技术生成

一、线性表

线性表(Linear List):由同种类型数据元素构成有序序列的线性结构。

  • 表中元素个数称为线性表的长度。
  • 线性表没有元素时,称为空表。
  • 表起始位置称为表头,表结束位置称为表尾。

线性表的顺序存储的实现

可利用数组的连续储存空间顺序存放线性表的各元素。

typedef struct LNode *List;
struct LNode
{
   
	ElementType Data[MAXSIZE];//MAXSIZE为数组的大小
	int Last;//Last代表最后一个元素 
};
struct LNode L;
List PtrL;//List表示线性表结构指针 
访问下标为i的元素:L.Data[i]或PtrL->Data[i]
线性表的长度:L.Last或PtrL->Last+1

主要操作的实现:

  1. 初始化(建立空的顺序表)
List MakeEmpty() 
{
   
	List PtrL;
	PtrL = (List)malloc(sizeof(struct LNode));
	PtrL->Last = -1;//Last代表最后一个元素 
	return Ptrl;
} 
  1. 查找
int Find(ElementType X, List PtrL)//线性表结构指针 
{
   
	int i=0;
	while(i <= PtrL->Last && PtrL->Data[i] != X)
	{
   
		i++;
	}
	if(i > PtrL->Last)
	{
   
		return -1;//没有找到,返回-1 
	}
	else
	{
   
		return i;//找到后返回的是储存位置 
	}
}
  1. 插入(第i(1<=i<=n+1)个位置上插入一个值为X的新元素)
void Insert(ElementType X, int i, List PtrL)
{
   
	int j;
	if
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值