10-20
一、复习
数据:
数据元素:
数据项:
数据结构:
逻辑结构
集合
线性结构
树形结构
图形结构
存储结构
顺序存储:每个存储元素之间地址是连续的。
插入删除效率低
查找修改效率高
链式存储:
插入删除效率高
查找修改效率低
地址之间不连续
索引存储
Hash存储
1、顺序表
(1)相关结构体定义
#define N 50 typedef int data_t;//int可以改成其他类型 typedef struct seqlist { data_t data[N];//可以是任意类型 int last; //表尾“指针”不是真的指针,而是指向最后一个元素的下标。 }Seqlist;
(2)相关操作
创建、增删改查、打印、清空、删除、判空、判满
2、链表
顺序表在创建时便已经定义好了大小,在添加数据容易空间浪费或者空间不足的情况;
顺序表的插入和删除随着元素基数增加,效率会逐渐降低
(1)链式存储的特点:
元素之间的地址空间不是连续的,需要插入新的元素时,需要重新该元素开辟空间(不会出现资源不足或者空间浪费的情况)
(2)链式分类
有头无头取决于第一个元素是否有效(有效则为无头,无效则为有头)
a.无头链表
b.有头链表(一般情况下适用)
(3)链表相关结构体
typedef int data_t; typedef struct linklist { data_t data;//节点的数据域(存数据) struct linklist *next; //节点的指针域(指向下一个节点的地址)struct linklist可写为别名Linklist }Linklist;
(4)链表相关操作
a.创建头节点(链表)
b.链表插入
(a)头插法
(b)按位置插入
c.链表删除
(a)按值
(b)按位置
d链表查询
(a)按值
(b)按位置
e.链表修改
(a)按值
(b)按位置
f.链表清空
g.链表销毁(要先清空再销毁)
h.打印表