- 1、本文档共118页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间: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(logMN)
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(i1||iL.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;in;i++)
逆序 for(i=n;i0;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.stacksize);s.top++;*s.top=e
出栈(删除):栈空(s.top==s.base);s.top--;e=*s.top
7、加:双栈共享一个空间
栈:1,2
空间:A[m]
1)栈底在空间两端
2)栈空:top1==0 top2==m
文档评论(0)