数据l构W三章设计题?qing)参考答案[2]_跨考网
1. 设从键盘输入一整数的序列:(x)a1, a2, a3Q…,an,试编写算法实玎ͼ(x)用栈l构存储输入的整敎ͼ?/span>ai?/span>-1Ӟ?/span>aiq栈Q当ai=-1Ӟ输出栈顶整数q出栈。算法应对异常情况(入栈满等Q给出相应的信息。?a target="_blank">南京航空航天大学 1998 ?/span> Q?/span>10分)?/span>
【参考答案?/span>
#define maxsize 栈空间容?/span>
void InOutS(int s[maxsize])
//s是元素ؓ(f)整数的栈Q本法q行入栈和退栈操作?/span>
{int top=0; //top为栈指针,定义top=0时ؓ(f)栈空?/span>
for(i=1; i<=n; i++) //n个整数序列作处理?/span>
{scanf(?/span>%d?/span>,&x); //从键盘读入整数序列?/span>
if(x!=-1) // d的整C{于-1时入栈?/span>
if(top==maxsize-1){printf(“栈?/span>\n?/span>);exit(0);}else s[++top]=x; //x入栈?/span>
else //d的整数等?/span>-1旉栈?/span>
{if(top==0){printf(“栈I?/span>\n?/span>);exit(0);} else printf(“出栈元素是%d\n?/span>,s[top--])Q?/span>}}
}//法l束?/span>
2. 设表辑ּ以字WŞ式已存入数组E[n]中,?/span>#’ؓ(f)表达式的l束W,试写出判断表辑ּ中括P‘(’和‘)’)是否配对?/span>C语言描述法Q?/span>EXYX(E); (注:(x)法中可调用栈操作的基本法?/span>) ?a target="_blank">北京U技大学 2001 ?ji)?/span>1 Q?/span>10分)?/span>
【参考答案?/span>
[题目分析]判断表达式中括号是否匚wQ可通过栈,单说是左括号时进栈,xh退栈。退栈时Q若栈顶元素是左括号Q则新读入的x号与栈顶左括号就可消厅R如此下去,输入表达式结束时Q栈为空则正,否则括号不匹配?/span>
int EXYX(char E[],int n)
//E[]是有n字符的字W数l,存放字符串表辑ּQ以?/span>#’结束。本法判断表达式中圆括h否匹配?/span>
{char s[30]; //s是一l数l,定w_大,用作存放括号的栈?/span>
int top=0; //top用作栈顶指针?/span>
s[top]= ?/span>#?/span>; //?/span>#’先入栈Q用于和表达式结束符号?/span>#’匹配?/span>
int i=0; //字符数组E的工作指针?/span>
while(E[i]!= ?/span>#?/span>) //逐字W处理字W表辑ּ的数l?/span>
switch(E[i])
{case?/span>(?/span>: s[++top]=?/span>(?/span>; i++ ; break ;
case?/span>)?/span>: if(s[top]==?/span>(?/span>{top--; i++; break;}
else{printf(“括号不配对?/span>);exit(0);}
case?/span>#?/span>: if(s[top]==?/span>#?/span>){printf(“括号配?/span>\n?/span>);return (1);}
else {printf(?/span> 括号不配?/span>\n?/span>);return (0);} //括号不配?/span>
default : i++; //d其它字符Q不作处理?/span>
}
}//法l束?/span>
[法讨论]本题是用栈判断括号匹配的特例Q只(g)查圆括号的配寏V一般情冉|(g)查花括号Q?/span>{’,?/span>}’)、方括号Q?/span>[’,?/span>]’)和圆括号Q‘(’,‘)’)的配寚w题。编写算法中如遇左括P?/span>{’,?/span>[’,或‘(’)压入栈中,如遇xP?/span>}’,?/span>]’,或‘)’)Q则与栈元素比较,如是与其配对的括P左花括号Q左Ҏ(gu)h左圆括号Q,则弹出栈元素;否则Q就l论括号不配寏V在d表达式结束符?/span>#’时Q栈中若应只剩?/span>#’,表示括号全部配对成功Q否则表C括号不匚w?/span>
另外Q由于本题只是检查括h否匹配,故对从表辑ּ中读入的不是括号的那些字W,一律未作处理。再有,假设栈容量够大Q因此入栈时未判断溢出?/font>
2022考研初复试已l接q尾壎ͼ考研学子全面q入2023届备?/b>Q跨考ؓ(f)23考研的考生准备?0大课包全E准备、全q复?fn)备考计划、目标院校专业辅对{全真复试模拟练?fn)和全程针对性指|2023考研的小伙伴针也已经开始择校和复习(fn)了,跨考考研畅学5.0版本全新升Q无Z在校在家都可以更自如的完成你的考研复习(fn)Q?/a>暑假集训?/span>带来了院校专业初步选择Q明方向;考研备考全q规划,核心知识点入门;个性化制定备考方案,助你赢在赯U,早出发一点离成功更q一点!
考研院校专业选择和考研复习(fn)计划 | |||
2023备考学?/td> | 2023U上U下随时学习(fn) | 34所自划UK校考研复试分数U汇?/td> | |
2022考研复试最全信息整?/a> | 全国各招生院校考研复试分数U汇?/a> | ||
2023全日制封闭训l?/span> | 全国各招生院校考研调剂信息汇?/a> | ||
2023考研先知 | 考研考试U目有哪些? | 如何正确看待考研分数U? | |
不同院校相同专业如何选择更适合自己?/a> | 从就业说考研如何择专业? | ||
手把手教你如何选专业? | 高校研究生教育各学科门类排行?/a> |
相关推荐
跨考考研评
班型 | 定向班型 | 开班时?/td> | 高定?/td> | 标准?/td> | 评介绍 | 咨询 |
U季集训 | 冲刺?/td> | 9.10-12.20 | 168000 | 24800?/td> | 班面授+专业??+专业译֮向辅?协议加强评(高定?+专属规划{疑(高定?+_化答?复试资源(高定?+复试译(高定?+复试指导(高定?+复试班主?v1服务(高定?+复试面授密训(高定?+复试1v1(高定? | |
2023集训畅学 | 非定向(政英?数政qQ?/td> | 每月20?/td> | 22800?协议? | 13800?/td> | 先行阶在U课E?基础阶在U课E?强化阶在U课E?真题阶在U课E?冲刺阶在U课E?专业NҎ(gu)一对一评+班主dE督学服?全程规划体系+全程试体系+全程_化答?择校择专业能力定位体p?全年关键环节指导体系+初试加强?初试专属服务+复试全科标准班服?/td> |