数据结构1
来源:互联网 发布:尤克里里教程软件 编辑:程序博客网 时间:2024/06/03 04:42
一 线性表:
线性表的定义
定义n个数据元素的有限序列,记作(a1, a2, …, an)ai 是表中数据元素,n 是表长度
线性表的特点
除第一个元素外,其他每一个元素有一个且仅有一个
直接前驱。
除最后一个元素外其他每一个元素有一个且仅有一个
直接后继。
二 顺序表:
顺序表的定义和特点
定义 将线性表中的元素相继存放在一个连续的存储空间中。
可利用一维数组描述存储结构
特点 线性表的顺序存储方式
遍历 顺序访问, 可以随机存取
三 链表:
链接表是线性表的链接存储表示
单链表
静态链表
循环链表
双向链表
typedef char ListData;
typedef struct node { //链表结点
ListData data; //结点数据域
struct node * link; //结点链域
} ListNode;
typedef ListNode * LinkList;
LinkList first; //链表头指针
单链表中的插入与删除:
插入 第一种情况:在第一个结点前插入 newnode->link = first
第二种情况:在链表中间插入
newnode->link = p->link;
p->link = newnode;
删除
第一种情况: 删除表中第一个元素
第二种情况: 删除表中或表尾元素
int Delete ( LinkList& first, int i )
{
//在链表中删除第 i 个结点
ListNode *p, *q;
if ( i == 1 ) //删除表中第 1 个结点
{
q = first; first = first->link;
} else {
p = first; int k = 0; //找第 i-1个结点
while ( p != NULL && k < i-1 )
{
p = p->link; k++;
}
if ( p == NULL || p->link == NULL )
{
printf ( “无效的删除位置!\n” );
return 0;
}
else
{ //删除表中或表尾元素
q = p->link; //重新链接
p->link = q->link;
}
}
free ( q ); //删除q
return 1;
}
带表头结点的单链表
表头结点位于表的最前端,本身不带数据,仅标志表头。
设置表头结点的目的是
统一空表与非空表的操作
简化链表操作的实现
- 数据结构1-数据结构概述
- 数据结构1
- 数据结构1
- 数据结构1
- 数据结构1
- 数据结构 1
- 数据结构1
- 数据结构 1
- 数据结构1
- 数据结构-1
- 数据结构1
- 数据结构1
- 数据结构-1
- 数据结构1
- 数据结构1
- 数据结构1
- (1): 数据结构
- #数据结构 1
- Router的使用
- 获取跳转菜单的值
- idea 注册
- php阿里大于短信验证码发送
- Spring集成Quartz定时任务框架介绍和Cron表达式详解
- 数据结构1
- Java 的过滤器Filter
- 助你快速踏入高薪职场——2017面试集锦之算法与编程
- canvas实现一个解锁demo
- modelsim中显示正弦波
- NYOJ1078 汉诺塔(四)
- TensorFlow
- 汇编语言
- Spring,Spring MVC,MyBatis,Hibernate总结