知识大全 数据结构考研分类复习真题 第三章 答案[15]
Posted 指针
篇首语:胸怀万里世界, 放眼无限未来。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第三章 答案[15]相关的知识,希望对你有一定的参考价值。
五 算法设计题
[题目分析]两栈共享向量空间 将两栈栈底设在向量两端 初始时 s 栈顶指针为 s 栈顶为maxsize 两栈顶指针相邻时为栈满 两栈顶相向 迎面增长 栈顶指针指向栈顶元素
#define maxsize 两栈共享顺序存储空间所能达到的最多元素数 #define elemtp int //假设元素类型为整型 typedef struct elemtp stack[maxsize]; //栈空间 int top[ ]; //top为两个栈顶指针 stk; stk s; //s是如上定义的结构类型变量 为全局变量
( )入栈操作
int push(int i int x) //入栈操作 i为栈号 i= 表示左边的栈s i= 表示右边的栈s x是入栈元素 入栈成功返回 否则返回 if(i< ||i> )printf( 栈号输入不对 );exit( ); if(s top[ ] s top[ ]== ) printf( 栈已满\\n );return( ); switch(i) case : s stack[++s top[ ]]=x; return( ); break; case : s stack[ s top[ ]]=x; return( ); //push
( ) 退栈操作
elemtp pop(int i) //退栈算法 i代表栈号 i= 时为s 栈 i= 时为s 栈 退栈成功返回退栈元素 否则返回 if(i< || i> )printf( 栈号输入错误\\n ) exit( ); switch(i) case : if(s top[ ]== ) printf( 栈空\\n ) return( ) else return(s stack[s top[ ] ]); case : if(s top[ ]==maxsize printf( 栈空\\n ); return( ); else return(s stack[s top[ ]++]); //算法结束
[算法讨论] 请注意算法中两栈入栈和退栈时的栈顶指针的计算 两栈共享空间示意图略 s 栈是通常意义下的栈 而s 栈入栈操作时 其栈顶指针左移(减 ) 退栈时 栈顶指针右移(加 )
cha138/Article/program/sjjg/201311/22708相关参考
第三章 栈和队列答案 一选择题 BBABDCBDDCDBDDDCBCBDBBBDDDDCAADBBDCBCBACCFCCAAD 二判断题 √√√√×√√√√×√×××√×√×√√
见上题的解答 参见上面题 typedefstructnode elemtypeelemcq[m]; //m为队列最大可能的容量 intfrontrear;
typedefstruct elemtpq[m]; intfrontcount; //front是队首指针count是队列中元素个数 cqnode; &nbs
[题目分析]本题与上面题基本相同现用类C语言给出该双端队列的定义 #definemaxsize typedefstruct datatypeelem[maxsize]; int
#definemaxsize栈空间容量 voidInOutS(ints[maxsize]) //s是元素为整数的栈本算法进行入栈和退栈操作 inttop=;  
s=(LinkedList)malloc(sizeof(LNode))s>data=x;s>next=r>nextr>next=sr=s 牺牲一个存储单元 &n
既不能由输入受限的双端队列得到也不能由输出受限的双端队列得到的输出序列是dbca () () &nbs
本题与上题本质上相同现用类C语言编写入队和出队算法 ()voidEnQueue(LinkedListrearElemTypex) //rear是带头结点的循环链队列的尾指针本算法将元素x插入到
intMaxValue(inta[]intn)//设整数序列存于数组a中共有n个本算法求解其最大值 if(n==)max=a[]; elseifa[n]>MaxValue(an)max=
[题目分析]这是以读入数据的顺序为相反顺序进行累乘问题可将读入数据放入栈中到输入结束将栈中数据退出进行累乘累乘的初值为 PROC test; CONSTmaxsize=; VARs