当前位置:文档之家› 基本内容线性表的逻辑结构定义和各种存储结构的描述方(精)

基本内容线性表的逻辑结构定义和各种存储结构的描述方(精)


p->data=a[i];
p->next=la->next; la->next=p; } }
第三节 线性表的链式存储结构
(2)、用尾插法建立单链表(带头结点) void creat2(Linklist &la,int a[n])
{ la=(Linklist)malloc(sizeof(LNODE));
第二节 线性表的顺序存储结构
5、归并 已知线性表LA和LB中的数据元素按值非递减有序排列, 现将LA和LB合成为一个新的线性表LC,且LC中数据元 素仍按值非递减排列有序。
status merge(sqlisttp la,sqlisttp lb;sqlisttp &lc) { i=1;j=1;k=0; while (i<=st&&j<=st) if (la.elem[i]<=lb.elem[j]) {lc.elem[++k]=la.elem[i];++i;} else {lc.elem[++k]=lb.elem[j];++j} while (i<=st) {lc.elem[++k]=la.elem[i];++i;} while (j<=st) {lc.elem[++k]=lb.elem[j];++j;} st=k; return OK; }
第二节 线性表的顺序存储结构
4、删除 在顺序表v中删除第i个元素。 status delete(sqlisttp &v,int i) {if (i<1||i>st) return ERROR; else {for (j=i;j<=st-1;j++) v.elem[j-1]=v.elem[j]; st--; return OK; } }
第二节 线性表的顺序存储结构
3、插入 在顺序表v中第i个元素前插入元素b。 status insert(sqlisttp &v,int i,elemtype b) {if (i<1||i>st+1) return ERROR; else if (st>=maxlen) return OVERFLOW; else {for(j=st-1;j>=i-1;j--) v.elem[j+1]=v.elem[j]; v.elem[i-1]=b; st++; return OK; } }
第二节 线性表的顺序存储结构
把线性表的结点按逻辑次序依次存放在 一组地址连续的存储单元里,用这种方法存 储的线性表称为顺序表。
C语言中用一维数组来描述: #define MAXLEN 线性表的最大长度 typedef struct{elemtype elem[MAXLEN]; int last素。 v.elem[i-1] 2、求长度 求顺序表v中元素的个数。 st
第三节 线性表的链式存储结构
1、 建立 (1)、用头插法建立单链表(带头结点)
void creat1(Linklist &la,int a[n])
{ la=(Linklist)malloc(sizeof(LNODE)); la->next=null; for(i=n-1;i>=0;i--) {p=(Linklist)malloc(sizeof(LNODE));
第三节 线性表的链式存储结构
线性表的顺序存储结构特点是用物理位置上的邻接 关系来表示结点之间的逻辑关系,具有如下优缺点:
优点:1、内存的存储密度高。
2、具有随机存取的特点。
缺点:1、插入和删除操作不方便。
2、存储空间需预先分配。 链接存储是最常用的存储方式之一,不仅可以用 来表示线性表,而且可用来表示各种非线性结构。 以链接方式存储的线性表称为链表。 从实现角度看,链表可分为动态链表和静态链表。 从链接方式看,链表可分为单链表、循环链表和双向链表。
第一节 线性表的逻辑结构
线性表的定义: 含有N个数据元素的线性表是一个数据结构: Linear_list=(D,R) 其中:D={ai|ai属于D0,i=1,2,…,n,n>=0} R={<ai-1,ai>|ai-1,ai属于D0,i=2,3,…,n} D0为某个数据对象。 线性表中的数据元素可以是各种各样的,但同一线 性表中的元素必是具有相同属性,属于同一数据对象。 关系R是一个有序偶对的集合,表示线性表中的数据元素 之间的相邻关系,即ai-1领先于ai,ai领先于ai+1,称ai-1 为ai的直接前驱,ai+1为ai的直接后继,线性表中数据元 素个数为n ( n>=0 )定义为线性表的长度, n=0 时为空表, n>0时,记为:(a1,a2,…,ai,…,an).
第二节 线性表的顺序存储结构
线性表的动态分配的顺序存储结构: #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef struct { elemtype *elem; int length; int listsize; }sqlist;
第三节 线性表的链式存储结构
一、单链表(线性链表)
链表中每个结点只包含一个指向后继的指针域。 在C中线性表的单链表存储结构的数据描述如下: typedef struct LNODE{ elemtype data; struct LNODE *next; }LNODE,*Linklist; 注意分清三个概念: 开始结点:链表中用来存储线性表中第一个数据元素的 结点。 头结点:为操作方便,在开始结点之前附设了一个结点。 头指针:指向头结点或开始结点的指针。
第二章 线性表
基本内容:线性表的逻辑结构定义和各种存
储结构的描述方法;在线性表的两类存储结构 上如何实现基本运算。
重点:掌握顺序表和链表的描述方法、特点
及有关概念。
难点:掌握顺序表上的插入和删除算法以及
动态链表的建立、查找、插入和删除算法。
第一节 线性表的逻辑结构 第二节 线性表的顺序存储结构 第三节 线性表的链式存储结构
相关主题