数据结构基础(4)顺序表.链表.栈

顺序表虽然是一种很有用的存储结构,但是也具有以下局限性:


1.若要为顺序表扩充存储空间,则需要重新创建一个地址连续的更大的存储空间,并把原有的数据元素都复制到新的存储空间中。


2.因为顺序存储要求逻辑上相邻的数据元素,在物理存储位置上也相邻,这就意味着增加删除元素会引起平均约一半的数据元素移动。


所以顺序表适合“静态”线性表,即一旦形成就很少进行插入删除操作。对于需要频繁执行插入和删除操作的“动态”线性表,通常采用链式存储结构。


因为链式存储结构不要求逻辑上相邻的数据元素在物理上也相邻,是用一组地址任意的存储单元来存放数据元素的值。所以,它只能按顺序存取。


链式存储结构的概念之前已经说过了,这里就不详细说了。



对于链表我个人的理解是这样的,每个链表都会有一个头指针(head)。如果单链表有头结点的话,那么这个头指针是指向这个头结点的,


如果是没有头结点,那么这个头指针是指向链表中的首结点的。


什么是头结点呢,头结点就是无论是不是空链表,永远在链表物理地址上的第一位。设置一个头结点,里面并不存放值,只是为了简化删除,插入操作。


单链表的总体思想:从一个空表开始,一次将新结点插入到当前形成的单链表中。根据插入位置的不同,分为头插法和尾插法。


头插法:每次将创建的新结点插入到当前形成的单链表的表头。


栈是一种特殊的线性表,栈中的数据元素以及数据元素之间的逻辑关系和线性表相同,俩者的差别在于:线性表的插入和删除操作可以在任意位置进行,而栈的插入和删除操作只允许在表的尾端进行。


通常把插入操作叫做入栈,删除操作叫做出栈。栈是一种先进后出的线性表。生活中有许多具有栈特性的应用实例,比如,一叠盘子。去盘子和添加盘子的操作满足先进后出的原则。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值