【昊昊带你学】基本数据结构(上)

【昊昊带你学】基本数据结构(上)

ID:16291017

大小:25.71 KB

页数:3页

时间:2018-08-09

【昊昊带你学】基本数据结构(上)_第1页
【昊昊带你学】基本数据结构(上)_第2页
【昊昊带你学】基本数据结构(上)_第3页
资源描述:

《【昊昊带你学】基本数据结构(上)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、流程控制语句及伪代码首先,我们要知道伪代码是为了来描述算法的。所以伪代码必须结构清晰,可读性要好,尽量贴近自然语言。据昊昊所知,伪代码没有什么硬性规定的样子,大家不用拘泥于某种语言只要能表达清楚就好。下面我们来介绍一下常用的语句及其伪代码(这里我参照的是《算法导论》里的伪代码,以后用的伪代码应该也是参照《导论》来写的)。If条件语句:顾名思义是由某个条件使流程分化成若干条支线,伪代码如下:If表达式then………………else………………Switch分支语句:其实switch的功能可以用if条件语句很类似,只是if只能分为两

2、条支线,而switch可以分出很多条,伪代码如下:Switch表达式Case值1:……Case值2:………………Case值n:……While循环语句:这个循环语句是先判断再循环,知道条件不满足时退出循环。伪代码如下:While表达式Do1、……2、……3、…………N、……(先判断表达式是否为真,当表达式为真时执行语句1-n,在重复上述过程,直到表达式为假)For循环语句:这也是一种循环,不过这种循环有明确的次数。伪代码如下:Fori←ato/downtob(stepx)Do………………(i以x步长从a递增/递减至b执行循环体

3、,这里i是变量)Break:中断语句执行Continue:终止当前循环,继续下一次循环。赋值符号←:A←5(将A赋值为5)栈LIFO(last-in-first-out)类型的数据结构,在算法概述那篇文章里已经有所介绍,下面来具来介绍一下栈的实现(来自《算法导论》):http://www.cs.usfca.edu/~galles/visualization/StackArray.html上面那个网址是一个可视的栈。这表示栈为空,top指向0STACK-EMPTY(S)//没有编程经验的孩纸看这里,这叫一个函数~Iftop[s

4、]=0ThenreturntrueElsereturntruePS:S是一个栈,top[s]返回的是栈顶位置。如果是0则栈中没有元素。否则栈不为空。PUSH(S,x)Top[S]←top[S]+1S[top[S]]←xPS:push的意思是将一个元素压到栈里,那么就需要将栈顶那个指针上移,此时top[S]指向的位置没有元素,然后将X赋给S[top[S]]。POP(S)IfSTACK-EMPTY()Thenerror“underflow”Elsetop[S]←top[S]–1ReturnS[top[S]+1]PS:与PUSH相

5、反,POP要弹出栈顶元素。所以先将栈顶指针下移然后弹出栈顶元素。PEEK(S)ReturnS[top[S]]PS:PEEK是显示栈顶元素而不删除(如果在OOP编程的时候可能不能直接操作栈内元素,用PEEK来封装一下O_o)队先进先出的数据结构:http://www.cs.usfca.edu/~galles/visualization/QueueArray.html先进去玩玩吧~要注意,这表示头指针在3这个位置这表示尾指针在2这个位置大家可以把队中加满元素,然后DEQUEUE出两个元素,再ENQUEUE一个元素,你会发现它被加

6、到0的位置了。Tail从14跳到了0.ENQUEUE(Q,x)Q[tail[Q]]←xIftail[Q]=length[Q]Thentail[Q]←1Elsetail[Q]←tail[Q]+1PS:进队操作,x赋给队尾元素,tail[Q]+1,如果队列已满,队尾指针挪到开头,来防止溢出DEQUEUE(Q)X←Q[head[Q]]Ifhead[Q]=length[Q]Thenhead[Q]←1Elsehead[Q]←head[Q]+1ReturnxPS:出队操作,队头元素赋给X,头指针+1,同ENQUEUE防溢出,最后返回X值

7、。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。