数据结构复习笔记(黑皮书)

这篇博客是关于数据结构的复习笔记,重点介绍了列表、栈和队列的基本概念和操作。在算法分析部分,讲解了运行时间估计的四种常见情况。列表部分详细讨论了简单数组实现和链表实现的优缺点,包括单链表、双链表、循环链表及其应用。栈作为后进先出的数据结构,其数组和链表实现也被阐述。
摘要由CSDN通过智能技术生成

 

目录

review

Chapter 1 Introdution

Chapter 2 Algorithm Analysis

一、运行时间估计

Chapter 3 Lists, Stacks, and Queues 表 栈 队列

一、表 Lists

二、栈 stack LIFO(后进先出)


review

Chapter 1 Introdution

数据结构:数据集data set +关系relation + 操作operations

算法+数据结构=程序

逻辑描述+物理操作

Chapter 2 Algorithm Analysis

一、运行时间估计

T(N)=O(f(N)) 存在正常数 c 和 n0 使得当 N ≧ n0 时 T(N) ≦ cf(N)

T(N)=Ω(g(N)) 存在正常数 c 和 n0 使得当 N ≧ n0 时 T(N) ≧ cg(N)

T(N)=Θ(h(N)) 当且仅当T(N) =O(h(N)) 且 T(N) = Ω(h(N))

T(N)=o(p(N)) 若 T(N) = O(p(N)) 且 T(N) ≠ Θ(p(N))

some rules

1、若 𝑇_1 (𝑁)=𝑂(𝑓(𝑁)) 且 𝑇_2 (𝑁)=𝑂(𝑔(𝑁)), 那么

(a) 𝑇_1 (𝑁)+𝑇_2 (𝑁)=max⁡(𝑂(𝑓(𝑁), 𝑂(𝑔(𝑁))),

(b) 𝑇_1 (𝑁)∗𝑇_2 (𝑁)=𝑂(𝑓(𝑁)∗𝑔(𝑁))

2、若𝑇(𝑁) 是 k 次多项式(polynomial), 那么 𝑇(𝑁)=Θ(𝑁^𝑘)

3、对任意常数 k 有〖𝑙𝑜𝑔𝑁〗^𝑘 =𝑂(𝑁) .

this tell us that logarithms(对数) grow very slowly

Chapter 3 Lists, Stacks, and Queues 表 栈 队列

一、表 Lists

1.表的简单数组实现

缺点:MaxSize 需要估计,通常需要估计得大一些,浪费大量空间,特别是存在未知大小的表;

插入 Insertion 和Deletion 需要O(N) 时间,同时涉及大量数据移动;

优点:PrintList 和 Find 以线性时间执行,FindKth 花费常数时间

 

2.链表 linked list (指针实现)

链表由一系列不必在内存中相连的结构组成,每个结构均含有表元素和指向包含该元素后继元的结构的指针 Next ,最后一个单元的 Next 指向 NULL(0);

链表的类型声明

 

struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode List;
typedef PtrToNode Position;

struct Node
{
    ElementType Element;
    Positon Next;
};

测试链表是否为空

 

// return true if is empty
int IsEmpty(List L)
{
    return L->Next == NULL;
}

测试当前位置是否为链表末尾

 


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值