数据结构复习笔记(2)

1,  若入栈的元素为n,则可得到的输出序列数量为 (2n)!/(n+1)(n!)(n!)

2,  用两个长度相同的栈S1,S2构造一个队列。在S1中进行入队操作,S2中进行出队操作 ,判断队列空的条件是,S1S2同时为空,判断队列满的条件是S1S2同时为满。

None.gifvoid EnQueue(ElemType x)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
if(!Full(S1))
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{//S1未满直接进入
InBlock.gif
        S1.Push(x);
ExpandedSubBlockEnd.gif    }

InBlock.gif    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
if(Empty(S2)==true)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
while(!Empty(S1))
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                S2.Push(S1.Pop());
ExpandedSubBlockEnd.gif            }

InBlock.gif            S1.Push(x);        
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
None.gifElemType DeQueue()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
if(!Empty(S2))
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
return S2.Pop();
ExpandedSubBlockEnd.gif    }

InBlock.gif    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
if(!Empty(S1))
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
while(!Empty(S1))
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                S2.Push(S1.Pop());
ExpandedSubBlockEnd.gif            }

InBlock.gif            
return S2.Pop();
ExpandedSubBlockEnd.gif        }

InBlock.gif        
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif

3.求两个正整数的最大公约数的非递归算法。

None.gif#define MAX 100
None.gif
struct Stack
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
int s;
InBlock.gif    
int t;
ExpandedBlockEnd.gif}
;
None.gif
None.gif
int gcd(int m,int n)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
int k;
InBlock.gif    Stack S[MAX];
InBlock.gif    
int top = -1,tmp;
InBlock.gif    
if(m<n)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        tmp 
= m;
InBlock.gif        m 
= n;
InBlock.gif        n 
= tmp;
ExpandedSubBlockEnd.gif    }

InBlock.gif    top
++;
InBlock.gif    S[top].s 
= m;
InBlock.gif    S[top].t 
= n;
InBlock.gif    
while(top>=0&&S[top].t!=0)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
if(S[top].t!=0)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            tmp 
= S[top].s;
InBlock.gif            m 
= S[top].t;
InBlock.gif            n 
= m%tmp;
InBlock.gif            top
++;
InBlock.gif            S[top].s 
= m;
InBlock.gif            S[top].t 
= n;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

InBlock.gif    
return S[top].s;
ExpandedBlockEnd.gif}

None.gif

4

                      n+1,m =0

Akm(m,n)  =           Akm(m-1,1) m!=0,n=0

                      Akm(m-1,Akm(m,n-1)),m!=0,n!=0

写非递归算法。


None.gif#define MAXSIZE 100
None.giftypedef 
struct
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
int tm;
InBlock.gif    
int tn;
ExpandedBlockEnd.gif}
Stack;
None.gif
None.gif
int akm(int m,int n)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    Stack S[MAXSIZE];
InBlock.gif    
int top = 0;
InBlock.gif    S[top].tm 
= m;
InBlock.gif    S[top].tn 
= n;
InBlock.gif    
do
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
while(S[top].tm!=0)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
while(S[top].tn!=0)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                top
++;
InBlock.gif                S[top].tm 
= S[top-1].tm;
InBlock.gif                S[top].tn 
= S[top-1].tn-1;
ExpandedSubBlockEnd.gif            }

InBlock.gif            S[top].tm
--;
InBlock.gif            S[top].tn
=1;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
if(top>0)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            top
--;
InBlock.gif            S[top].tm
--;
InBlock.gif            S[top].tn 
= S[top].tn+1;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
ExpandedSubBlockEnd.gif    }
while(top!=0 || S[top].tm!=0);
InBlock.gif    top
--;
InBlock.gif    
return S[top+1].tn+1;
ExpandedBlockEnd.gif}

5.写出和下列递归过程等价的非递归过程

None.gifvoid test(int &sum)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
int k;
InBlock.gif    scanf(
"%d",&k);
InBlock.gif    
if(k==0) sum = 1;
InBlock.gif    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        test(sum);
InBlock.gif        sum 
= k*sum;
ExpandedSubBlockEnd.gif    }

InBlock.gif    printf(
"%d",sum);
ExpandedBlockEnd.gif}

None.gif


分析:程序功能是按照输入的整数,按相反顺序进行累计乘法运算

None.gif#define MAXSIZE 100
None.gif
void test(int &sum)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
int Stack[MAXSIZE];
InBlock.gif    
int top = -1,k;
InBlock.gif    sum 
= 1;
InBlock.gif    scanf(
"%d",&k);
InBlock.gif    
while(k!=0)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        Stack[
++top] = k;
InBlock.gif        scanf(
"%d",&k);
ExpandedSubBlockEnd.gif    }

InBlock.gif    printf(
"%d",sum);
InBlock.gif    
while(top!=-1)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        sum 
*=Stack[top--];
InBlock.gif        printf(
"%d",sum);
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif        
None.gif


6
.假设表达式由单字母变量和双目四则运算算符构成,写一个算法,将一个书写正确的表达式转换为逆波兰式。

None.gifvoid ConPoland(char express[],char suffix[])
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
char *= express,ch1 = *p,ch2;
InBlock.gif    
int k = 0;
InBlock.gif    InitStack(S);
InBlock.gif    Push(S,
'#');
InBlock.gif    
while(!StackEmpty(S))
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
if(!IsOperator(ch1))
InBlock.gif            suffix[k
++= ch1;
InBlock.gif        
else
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
switch(ch1)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
case '(':    
InBlock.gif                    Push(S,ch1);
break;
InBlock.gif                
case ')':    
InBlock.gif                    Pop(S,ch2);
InBlock.gif                    
while(ch2!='(')    
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        suffix[k
++= ch2;
InBlock.gif                        Pop(S,ch2);
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    
break;
InBlock.gif                
default:
InBlock.gif                    
while(GetTop(S,ch2)&&precede(ch2,ch1))
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        suffix[k
++= ch2;
InBlock.gif                        Pop(S,ch2);
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    
if(ch1!='#')
InBlock.gif                        Push(S,ch1);
InBlock.gif                    
break;                            
InBlock.gif                    
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

InBlock.gif        
if(ch1!="#')    
InBlock.gif
            ch1 = *++p;
ExpandedSubBlockEnd.gif    }

InBlock.gif    suffix[k] 
= '\0';
ExpandedBlockEnd.gif}

None.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html兼容webki,评IE10对HTML5的完美支持

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼近期Windows 8的消息充斥着整个网络。微软将IE10集成在系统中&#xff0c;并且宣称IE10会很好的支持HTML5。本文是对IE10支持HTML5的研究报告。预览&#xff1a;HTML5初探 在过去的几年里我们做了一系列测试来评估主要的移动平台对…

用于MCU,基于FreeRTOS的micro(轻量级)ROS

编辑整理&#xff1a;strongerHuang作者&#xff1a;Francesca Finocchiaro关注我的读者中应该有部分是做ROS相关的工作&#xff0c;今天就来分享一个基于FreeRTOS的micro&#xff08;微型&#xff09;ROS。一、关于ROSROS&#xff1a;Robot Operating System,&#xff0c;即机…

惜缘-致家乡的一位女孩[原创]

命里有时终须有,命里无时莫强求.这说的应该就是缘分吧.曾经有人说,每个人来到世界上,都只有一半.然后,每个人会花一生的时间寻找另一半.无论你有意识还是无意识地去寻找你的恋人,你是不是都希望这个假设是成立的呢?至少,你知道有那样一个人在世界的那一个地方等你回来,在你找他…

【干货】同步与互斥的失败例子

韦东山老师最新录制的驱动大全之<<同步与互斥>>收费视频已经在淘宝上架销售 &#xff0c;一共7节&#xff0c;良心价29元&#xff0c;同时已经同步到CSDN , 51CTO , 电子发烧友&#xff0c;腾讯课堂等平台。本文是其中一节《同步与互斥的失败例子》视频配套文档&am…

微型计算机计算机钢琴,微型计算机原理及接口技术钢琴课程设计.doc

高频电子线路课程设计题目&#xff1a; 高 频 功 率 放 大 器 .班级&#xff1a; 08级通信1班 .姓名&#xff1a; 马宗祥 .学号&#xff1a; P081513166 .成绩&#xff1a; .组内分工成员及分工&#xff1a;程冲冲&#xff1a;低频放大马云、吴欣萌&#xff1a;振荡及调制洪学军…

TCP三次握手

以下是我做的实验 &#xff0c;180.97.33.108 是百度 以下是我自己画的图 转载于:https://www.cnblogs.com/heben/p/7879439.html

微软TechEd 2006亲历(六):微软新一代系统管理平台面纱待揭

<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />对于企业网络管理人员&#xff0c;也许没有想到微软将陆续提供it系统&#xff08;包括存储&#xff09;的管理工具。利用这些管理工具&#xff0c;企业将可以轻松、便捷地管理企业…

Linux中断子系统-通用框架处理

背景Kernel版本&#xff1a;4.14ARM64处理器&#xff0c;Contex-A53&#xff0c;双核使用工具&#xff1a;Source Insight 3.5&#xff0c; Visio1. 概述《Linux中断子系统&#xff08;一&#xff09;-中断控制器及驱动分析》讲到了底层硬件GIC驱动&#xff0c;以及Arch-Specif…

接口测试工具-fiddler的运用

本篇主要介绍一下fiddler的基本运用&#xff0c;包括查看接口请求方式&#xff0c;状态响应码&#xff0c;如何进行接口测试等 一&#xff0e;Fiddler的优点 独立的可以直接抓http请求小巧、功能完善快捷、启动就行代理方便二&#xff0e;什么是Fiddler Fiddler是一个http协议调…

微电子科学与工程要学计算机吗,微电子科学与工程专业就业前景如何 有前途吗...

微电子科学与工程专业就业前景如何&#xff1f;有前途吗&#xff1f;下面小编为大家整理了相关内容&#xff0c;以供参考&#xff0c;一起来看看吧&#xff01;微电子科学与工程专业就业前景微电子科学与工程专业近年来也逐渐热火起来了&#xff0c;竞争力也很大。微电子专业一…

利用Excel VBA畫出所有圖標

有時候﹐常感覺﹐恰當的使用Excel的VBA做些開發﹐常常收到事半功倍的效果的。從Birdshome的博客中看到這篇貼深有感觸﹐當然﹐自己以前也是使用過一段時間的VBA開發的﹐直到使用.net之后就沒有再搞那玩意兒了﹐唉....﹐感嘆一下先。順便把那里jinta2001的Excel文檔轉上來。呵呵…

我的丈母娘

2020年9月17日12点46分&#xff0c;刚进入新居我终于还是要写这篇文章了&#xff0c;想了很久&#xff0c;我觉得写一篇文章来记录下我的丈母娘。前段时间&#xff0c;小云妈妈骑车不小心把鼻子给摔破了&#xff0c;很严重&#xff0c;二哥马上回家带老人到医院检查并做了手术。…

学法语,加油!

我家小猪又折腾法语了.在大学的时候她就不学无术&#xff0c;当我专心治学的时候&#xff0c;她总是手捧闲书作认真状&#xff1b;正儿八经上课时间&#xff0c;大部分还是可以认真度过&#xff0c;但是逢到计算机课&#xff0c;她就全傻了&#xff0c;是的&#xff0c;她是计算…

华南理工大学广州学院计算机二级,华南理工大学广州学院学子在第三届“泰迪杯”数据分析职业技能大赛中荣获佳绩...

12月19日&#xff0c;第三届泰迪杯数据分析职业技能大赛落下帷幕并公示了获奖名单。华南理工大学广州学院获得国家二等奖一项&#xff0c;国家三等奖两项的好成绩&#xff0c;这是我华南理工大学广州学院首次有组织地参与该赛事。本次竞赛由计算机工程学院组织&#xff0c;同时…

OpenGL程序运行提示“glut32.dll丢失问题”

调试环境&#xff1a; Win10 (x64) &#xff0c;VS2015 解决方案 &#xff08;1&#xff09;将gult32.dll&#xff0c;glut.dll复制到C:\WINDOWS\SysWOW64 (如果是32位操作系统&#xff0c;则是WINDOWS\system32这个文件下) &#xff08;2&#xff09;将GL文件夹的路径添加到vs…

华为突然宣布,对物联网下手了!

5G时代到来物联网技术的应用离我们越来越近智慧交通、智能家庭、智慧园区越来越多的融入到我们的生活当中但国内物联网人才短缺每年人才缺口达百万之多作为5G技术的先锋华为云特别推出【IoT物联网开发全栈成长计划】三大阶段&#xff0c;从学习到实践全流程提升物联网开发技能还…

Linux内核品读 /基础组件/ 模块机制快速入门

哈喽&#xff0c;我是杰克吴&#xff0c;继续记录我的学习心得。一、关于兴趣的几点思考1. 享受不是兴趣&#xff0c;愿意付出才是&#xff1a;兴趣很容易跟享受混淆。享受是被动的&#xff0c;无需付出&#xff1b;而兴趣则要求你甘愿为了这件事情付出努力。2.任何事情&#x…

台式计算机时间不准,每天开机电脑时间都不正确怎么办?试试这个办法!

原标题&#xff1a;每天开机电脑时间都不正确怎么办&#xff1f;试试这个办法&#xff01;上面电脑运用时间长了&#xff0c;经常会出现开机提示时间不正确&#xff0c;在系统上设置好时间后&#xff0c;第二天开机电脑时间还不正确&#xff0c;是什么原因呢&#xff1f;无论是…

Ajax与WebGIS

现在越来越多的桌面应用转向Web平台&#xff0c;而人们也一直希望日益丰富的Web应用能够做到简单易用、高效并具有良好的交互性能。随着Google推出Google Maps、GMail等一系列服务让人们看到了曙光&#xff0c;感受到一种全新的Web使用体验。这种体验的显著特点就是无需下载、安…

剑指offer(20)包含min函数的栈

题目描述 定义栈的数据结构&#xff0c;请在该类型中实现一个能够得到栈最小元素的min函数。 题目分析 首先一开始我们分析得到最小值肯定要比较嘛&#xff0c;和栈里面的数据一一比较&#xff0c;但是栈这种数据结构&#xff0c;你又只能和栈顶弹出来的数据进行比较&#xff0…