数据结构-2.2线性表的顺序结构存储及其运算实现

news/2024/5/20 6:27:21 标签: 数据结构, 顺序表

2.2.1 顺序表

  顺序表是一种定长的顺序存储结构(向量型的一维数组结构)。其用一段地址连续的存储单元依次存储线性表中的数据元素。
  我们将按以下三点描述一个顺序表

  • 1.存储空间的起始位置。
  • 2.顺序表的容量(最大长度)。
  • 3.顺序表的当前元素个数(最后元素的存放位置)。

  综上我们将使用【一维数组+当前长度】来组成一个顺序表
特点:线性表元素可以按地址相邻存储在数组的一片连续地址区域中。
缺点:数组的固定长度限制了线性表长度变化不得超过该固定长度。

2.2.2 顺序表上基本操作的实现

(1)初始化*init_SeqList()

//初始化
SeqList* Init_SeqList() {
	SeqList* L;
	L = (SeqList*)malloc(sizeof(SeqList));
	L->last = -1;
	return L;
}

  顺序表的初始化即构造一个空表,将L设为指针参数,首先动态分配存储空间,然后,将表中 last 指针置为-1,表示表中没有数据元素。

  • 因为我们存放的位置是从零开始的,所以我们将last置为-1。

(2)插入运算Insert_SeqList()

  在表的第i个位置上插入一个值为 x 的新元素。

int  Insert_SeqList(SeqList *L,int i,datatype x)
     { int j;
           if (L->last==MAXSIZE-1)
                {  printf("表满"); return(-1); }  /*表空间已满,不能插入*/
           if (i<1 || i>L->last+2)  /*检查插入位置的正确性*/
                       {  printf("位置错");return(0); } 
           for(j=L->last;j>=i-1;j--)
           L->data[j+1]=L->data[j];      /* 结点移动 */
           L->data[i-1]=x;     /*新元素插入*/
           L->last++;   /*last仍指向最后元素*/
           return (1);   /*插入成功,返回*/
      } 

  完成这一运算需通过以下步骤进行:
(1) 将ai~an 顺序向后移动,为新元素让出位置;
(2) 将 x 置入空出的第i个位置;
(3) 修改 last 指针(即修改表长),使之仍指向最后一个元素。

(3)删除运算 Delete_SeqList()


(4)按值查找 Locate_SeqList()


(5)销毁

//销毁
void Destroy_SeqList(SeqList** L) {
	if (*L) {
		free(*L);
		*L = NULL;
	}
}

  销毁顺序表即释放非空的顺序表的空间,并将其指针置为空(防止误操作)。

  • 这里要先释放空间再将指针置空,如果是先将指针置空就无法找到该空间了。

(6)求表长

//求表长
int Length_SeqList(SeqList* L) {
	return L->last + 1;
}

(7)判断表列是否为空

//判断是否为空
int isEmpty_SeqList(SeqList* L) {
	if (L->last == 0)
		return true;
	else
		return false;
}

(8)


http://www.niftyadmin.cn/n/672001.html

相关文章

至此,重构最后的一节

大型重构梳理并分解继承体系&#xff0c;我觉得里面有这么几点要注意的&#xff0c;1不是相似类型不要使用继承&#xff1b;2类相关的情况下可以抽象新增类保持依赖&#xff1b;3将混乱的代码重构&#xff0c;有面向对象的思想。ConvertProceduralDesigntoObjects将过程化的数据…

CC2430 标志和屏蔽的含义

CC2430 CC2530标志和屏蔽的含义 在学习CC2430的时候&#xff0c;经常遇到“屏蔽”和“标志”等术语。在阅读《ZIgBee技术实践教程》时&#xff0c;发现书中部分寄存器中关于“屏蔽”和“标志”的说明和数据手册有出入&#xff0c;所以在这里归纳一下。 XX屏蔽&#xff0c;以…

兵装集团入主国家政策助力 天威集团双喜临门

http://www.sina.com.cn 2007年09月30日 12:40 证券日报创业周刊- 本刊主编 袁 元 9月26日&#xff0c;停牌2个多月的天威保变(42.61,0.00,0.00%)迎来了其期盼许久的好消息。保定市国资委将持有的天威集团100%股权无偿划拨给中国兵器装备集团&#xff0c;与此同时&#xff0c;总…

CC2430 片内AD使用详解——查询法

CC2430 ADC使用——查询法 1 目标 熟悉使用CC2430的ADC功能。根据我自己开发板的情况&#xff0c;我使用P07作为AD转换的输入口&#xff0c;使用一个旋转电位器来调整输入端口的电压&#xff0c;通过串口发送AD转换结果。在这里还是说说ADC的结构。 CC2430的ADC是基于sigma…

[WinError 10054] 远程主机强迫关闭了一个现有的连接

出现这样的错误&#xff0c;是因为我们访问的速度过于频繁&#xff0c;致使网页认为我们是恶意的攻击行为&#xff0c;就出现了远程主机强迫关闭的现象。 加上 time.sleep(time) 放慢一下我们的速度&#xff0c;减少我们的循环访问&#xff0c;避免过频繁的访问。

指针中(->)和(.)的区别

结构体用点( . )&#xff0c;结构体指针用箭头( -> )。   也就是说点的左边必须为实体&#xff0c;箭头左边必须为指针。 为啥要这样用 这两个的实际功能相同&#xff0c;那为什么要用两种符号呢&#xff1f;我们不能也用点( . )来操作结构体指针呢&#xff1f;   这就…

炒美股一族

关于如何开户&#xff1a;首先在美国的证券公司申请开户&#xff0c;最好是知名证券公司如Etrade&#xff0c;Amertrade&#xff0c;这样就获得一个最基本的交易平台。在这个账户上既可以买卖纽交所的股票&#xff0c;也可以买卖NASDAQ的股票。然后再将资金通过国内的银行汇到这…

CC2430 Joystick硬件说明

CC2430 Joystick 硬件说明 1 目标 学习了CC2430的AD&#xff0c;UART和Timer之后&#xff0c;感觉自己有点入门了&#xff0c;接着做一点人机交互的内容。在这里我介绍一下Joystick的硬件连接。 刚开始看Joystick的硬件部分的时候&#xff0c;还很的觉得有点麻烦的&#xff0…