数据结构word笔记

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;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.stacksiz

e);s.top++;*s.top=e

出栈(删除):栈空(s.top==s.base);s.top--;

e=*s.top

相关文档
最新文档