顺序表与链表(1)

发布于:2022-10-21 ⋅ 阅读:(301) ⋅ 点赞:(0)

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.打印表