其他分享
首页 > 其他分享> > ds第三章学习记录

ds第三章学习记录

作者:互联网

一.

     栈 :LIFO      top base

    队列:FIFO     front rear

 

二.

顺序栈新类型定义

typedef struct
{
SElemType data[MAXSIZE];
int top;
int size;
}Stack;       //用静态数组

初始化---------> top=0   size

push---------> *s.top++=e  

pop--------->e=s.data[--s.top]

typedef struct
{
SElemType *base;
SElemType *top;
int size;
}Stack;        //指针  动态性强

初始化---------> 分配数组空间 top=base   size

push---------> s.data[s.top++]=e

pop--------->e=*--S.top

//注意isEmpty isFull

 

队列

·假溢出 模运算

Q.rear = (Q.rear + 1)%6   如何区别队满还是队空呢? (1)少用一个元素空间, 即队列空间大小为m时,有m-1个元素就认为是队满。 队空的条件: Q.front = Q.rear 队满的条件: (Q rear+ 1)%M心CQSIZE = Q.front   (2)另设一个标志位以区别队列是 “空” 还是 “满"。   初始化 Q.front=Q.rear=O

 

三.

链栈--------->链表

typedef struct StackNode ElemType struct StackNode *next; ) StackNode,*LinkStack;   链队 

 

 

四. 递归与迭代

 

 

 

自底向上 和 自顶向下

底:小规模问题(终止条件)

顶:大规模问题(原问题)

自底向上的求解方法:由最小规模问题逐步向上求解,直至求出原问题的解。

 

 

 总结:自底向上的求解过程,其实就是一个填表的过程!

顺序存储 用它的下标来表示自变量?

自顶向下的求解方法:从原问题出发,分解出规模减小了的子问题,直至终止条件,然后由终止条件的结果进行回推,求出原问题的值。

自顶向下的求解方法就是真正正的一个递归求解的方法

使用递归的过程来求解问题 避免重复计算:数组的这种特性 作为一个辅助的数据结构帮助解决问题   (备忘录的读写速度

数组的什么特性呢?随机存取    根据数组的下标 迅速往这个下标里面的元素写入和读取

 

通常把自底向上求解的编程方法称为迭代,把自顶向下的编程方法称为递归。

其实你实现这个迭代。在我们的编程的这个结构里面,是用什么结构来实现迭代?  循环

两者比较:递归编程简单,只需要关注本层逻辑。

实递归来写代码 代码会比较简单,而且可读性比较强。

特点:只需要关注本层逻辑

递归有可能出现重复子问题的情况!

 

五. 

 

 

 

 

六.

小组讨论代码

1输入编号和积分时 因为是编号升序 从上一条编码的下一个位置开始遍历 减少时间

2给出姓名来查找时 可以两头一起开始往中间靠 这样时间能减半!

 

标签:底向上,第三章,递归,记录,top,求解,自顶向下,ds,rear
来源: https://www.cnblogs.com/drgnibasaw/p/12775216.html