您的位置:首页 > 理论基础 > 数据结构算法

《数据结构教程(第四版)》读书笔记-第二章 线性表

2017-06-26 16:49 281 查看
线性表:具有相同特性的数据元素的一个有限序列。线性表的长度为n。一对一结构。

线性表的顺序存储结构——顺序表

物理结构上连续。

线性表的链式存储结构——链表

用一组任意的存储单元存放数据元素。可以连续可以不连续。除了存储数据域Data外,还要存储指针域next和prior。每个链表都有一个头结点,数据域为空,通过头结点的指针唯一表示该链表。

单链表

基本运算:建立(头插入/尾插入),初始化、销毁、判断为空、插入、删除、查找。

头插入法:时间复杂度O(n),缺点是表顺序与输入顺序相反。



void createrlistF(Linklist *&L,ElemType a[],int n)
{ Linklist *s;
int i;
L=(linklist*)malloc(sizeof(Linklist));//创建头结点
L->next=NULL; //初始为空
for(i=1;i<n,i++)
{
s=(linklist*)malloc(sizeof(Linklist));
s->data=a[i]); //创建数据节点*s
s->next= l-next; //将*s插入到原开始结点之前,头结点之后
l->next= s;
}
}


尾插入法:时间复杂度O(n),正序



void createrlistF(Linklist *&L,ElemType a[],int n)
{ Linklist *s;
int i;
L=(linklist*)malloc(sizeof(Linklist));//创建头结点
r=L; //r始终指向尾结点,初始时相当于指向头结点
for(i=1;i<n,i++)
{
s=(linklist*)malloc(sizeof(Linklist));
s->data=a[i]); //创建数据节点*s
r->next= s; //将*s插入r之后
r= s;
}
r->next= NULL;//清空尾结点next
}


双链表

循环单链表、循环双链表

约瑟夫环问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构