欢迎来到天天文库
浏览记录
ID:16291017
大小:25.71 KB
页数:3页
时间:2018-08-09
《【昊昊带你学】基本数据结构(上)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
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、。
此文档下载收益归作者所有