数据结构word笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
张东
1145105494
简介:
1、算法+数据结构=程序
2、数据结构
3、数据、数据元素(基本单位)、数据项(最小单位)
4、数据结构在计算机中的映像是存储结构;数据元素在计算机中的映像是结点;数据项
在计算机中的映像是数据域;逻辑结构在计算机中的映像是关系。
5、四种存储方式
6、抽象数据类型
1)按不同特性分类
●原子类型
●固定聚合类型
●可变聚合类型
2)基本操作
●init 构造
●destroy 销毁●get 返回
●put 改变●isasc 升序
●isdesc 降序●Max 最大●min 最小
7、时间复杂度
技巧
1)对于循环程序(for),最大执行次数即为for的乘积。简言之,程序有多少for出现,就是n的多少次方
2)对于顺序结构,可用“求和取最大值“法则
3)对于循环程序(while),一般结果是O(log M N)
4)若是一般的赋值语句,时
间复杂度必为O(1)
5)对于选择结构的程序,一般时间复杂度为O(1)
加:自加自减
++ ——
x=2;
y=x++;
y=++x;
第二章线性表
1、表长相当于元素个数
2、线性表一般下标是1—n,故当n=0时,表示线性表为空表
3、list 表示线性表
elem 元素
length 表示求长度(线性表)
locate 定位(位置)
insert 插入(元素之前)
delete 删除
void 空类型(写程序必写)
顺序结构(链表相反)
优势:随机存取
劣势:在做插入或删除时需要移动大量的元素
malloc 分配一个连续空间
realloc 将已分配的空间进行重新分配
顺序表
插入时所需移动的元素次数期望值是n/2
删除时所需移动的元素次数期望值是(n-1)/2
删除:
模板语句:
q=&(L.elem[i-1]) 表示顺序表中插入元素或者删除元素的地址
加:
逻辑运算符:
!非&&与(一假即假)||或(一真即真)
逻辑值:
真(1)假(0)
比较运算符:
< >= <= == !=
若在if或者while后面的括号中出现逻辑表达式或者比较表达式,那么结果只能为真或假。
模板语句:
if(i<1||i>L.length)
return ERROR;
表示在顺序表中,删除元素,
若输入的删除地址不符合题意,则返回错误。
2、链式结构
1)结点=数据域(元素)+指针域(指向后继结点)单链表
2)一般在第一个元素之前,会创建一个头结点(头指针),用head表示。指向第一个元
素
head->NULL 表示空表head->next=NULL
clear 重置
create 创建
模板语句
p=L->next 表示单链表中、头结点为L指向下一个结点
N=(linklist)malloc(sizeof(LNode))
表示在单链表中生成新结点
技巧:
做单链表的插入操作
1)判断单链表的存在与否2)找到插入位置p=p->next j++
3)生成新结点malloc
4)赋值p->data=e(插入的元素)
5)插入元素
单链表删除操作
1)2)同插入
3)删除结点
模板
输出逆序
顺序for(i=0;i
循环链表
1、判断单链表的最后一个结点,表示方式是指针域为空;判断循环链表的最后结点,表示方式是指针域指向第一个结点
2、不需要头结点
3、循环链表为空,表达方式为L->next=L
双向链表
1、插入
2、删除
3、三部分:data next prior
linklist表示链式结构的线性表
第三章栈和队列
1、操作受限的线性表
栈
1、先进后出后进先出
2、表头-栈底表尾-栈顶
3、必须要有栈顶指针top
系列:12345进栈
出栈:12345
54321 34521
24351 41235
4、stack 栈
push 进栈
pop 出栈
empty 判断是否为空
5、当top=0/-1时,表示为空
栈
top==base(指向栈底指针)
top-base=0
stacksize=N 表示栈中元
素个数
模板语句
1)S.top==S.base 设置栈顶栈底指针
2)
S.Stacksize=
STACK_INIT_SIZE
6、
入栈(插入):栈满(s.top-s.base>=s.stacksiz
e);s.top++;*s.top=e
出栈(删除):栈空(s.top==s.base);s.top--;
e=*s.top