0
点赞
收藏
分享

微信扫一扫

数据结构与算法---线性表1

柠檬的那个酸_2333 2022-03-15 阅读 144

线性表

重点:

  • 线性表的逻辑结构
  • 线性表的顺序存储结构
  • 线性表的链式存储结构
  • 一元多项式的表示及相加

定义:

线性表n(n>=0)的同质元素的有限数列,每个元素有唯一的前驱和后继。首元素只有后继,尾元素只有前驱,n为0时是空表,n叫做线性表的长度。

线性表的基本操作

  • 初始化 InitList(&L)
  • 销毁 DestroyList(&L)
  • 清空 ClearList(&L)
  • 判断空表 ListEmpty(L)
  • 求长度 ListLength(L)
  • 取i值 GetElem(L,i,&e)
  • 定位 LocateElem(L,e,compare())
  • 求前驱 PriorElem(L,cur_e,&pre_e)
  • 求后继 NextElem(L,cur_e,&next_e)
  • 插入 ListInsert(&L,i,e)
  • 删除 ListDelete(&L,i,&e)
  • 遍历 ListTraverse(L,visit())
  • 复制 Copy(L,C) (L复制到C)
  • 合并 Merge(A,B,C) (把A,B合并到C中)

顺序存储结构

所有数据类型相同,占用空间大小相同。查找数据方便,常用数组表示顺序存储结构。

数组特点(用数组表示的原因)
  • 数组元素间连续
  • 数组所有元素数据类型相同
由于线行表的长度可变,所需的最大存储空间随问题的不同而不同。下面是线性表的动态分配顺序存储结构

顺序表的插入操作

顺序表的删除操作

  • 表长为n的顺序存储的线性表,当在任何位置上插入和删除相等时,插入一个元素所需移动元素平均个数为n/2,删除一个元素所需移动的平均个数为(n-1)/2.

顺序存储结构特点

  • 顺序存储的线性表可以随机存取其中任意元素
  • 数据元素最大个数需预先确定
  • 需要预先确定最大个数
  • 插入和删除效率低
  • 存储空间不变扩充

链式存储结构

  • 存储数据元素的值
  • 存储各数据元素之间的逻辑顺序
  • 将结点分为两部分:数据域(存储数据元素的值),指针域(下一个存储结点的位置)
  • 只含一个指针域的链表称为单向链表

结点的描述与实现

  • 带指针的结构体类型的描述

结点的实现

malloc(),realloc(),sizeof(),free()

动态分配

s=(LNode*)malloc(sizeof(LNode))

动态分配

free(s)

结点赋值

常见指针操作

q=p;
q=p->next;
p=p->next;
q->next=p;
q->next=p->next;

单链表的初始化

单链表插入

  • 后插入
  • 前插入

建立非空链表

  • 头插法
  • 尾插入法

两段论

  • 对象->next=前驱
  • 前去->next=对象

本章未完,如果有错误欢迎大家指正。

举报

相关推荐

0 条评论