顺序栈的课程设计
⑴ 设有一个顺序栈S,元素A,B,C,D,E,F依次进栈如果六个元素出栈的顺序是B,D,C,F,E,A
栈的元素按时间分别是
A->AB->A->AC->ACD->AC->A->AE->AEF->AE->A
所以栈的容量至少应是3
⑵ 用顺序栈实现回文完整的程序编写
/**
* 判断是否是回文对
*/
public static boolean judge(final String str){
Stack stack = new Stack();
int length =str.length()/2;
char[] ch=str.toCharArray();
//一半的元素入栈
for(int i=0;i<length;i++){
stack.push(ch[i]);
}
//根据字符串长度的奇偶决定比较开始的位置
int pos=0;
if(str.length()%2==0){
pos=length;
}else{
pos=length+1;
}
//将栈中的元素和字符串中的另一半内比较
while(!stack.empty()){
char temp=(Character) stack.pop();
if(temp!=ch[pos++])
return false;
}
return true;
}
⑶ 多栈共享的实现数据结构课程设计(采用顺序存储结构实现多栈共享,要求模拟完成进栈、出栈等过程。)
可以写主题啊
⑷ 设有一个顺序栈s
选B.理由:s1进栈,s1出栈;s2,s3进栈,s3出栈;s4进栈,s4,s2出栈;s5,s6进栈,s6,s5出栈.
⑸ 顺序栈-简单的实现
函数功能没问题 不过你的调用和你的打印描述对不上 而且你没有打印任何的数值出来
把main中的内容修改成这样
ElemTypeval;
SqStackS;
InitStack(S);
PushStack(S,1);
PushStack(S,2);
PushStack(S,3);
PushStack(S,4);
TrasverStack(S);
GetTop(S,val);
cout<<"栈顶元素为"<<val<<endl;
cout<<"出栈"<<endl;
PopStack(S,val);
cout<<"出栈元素"<<val<<endl;
cout<<"栈的长度为"<<lengthStack(S)<<endl;
return0;
⑹ 用顺序栈设计实现堆栈,堆栈操作集合包括初始化,判断栈空,入栈,出栈,取栈顶元素等。。 求解
typedef struct
{
int top
int data[maxsize]
}stack
int isempty(stack *s)
{
if(s->top=0)
return 1
else return 0
}
int push(stack *s,x)
{
if(s-top==maxsize)
return 0
s->data[++s->top]=x
return 1
}
void pop(stack *s,int *x)
{
if(isempty(s))
return 0
*x=s->data[s->top--]
return 1
}
int gettop(stack *s,int *x)
{
if(isempty(s))
return 0
*x=s->data[s->top]
return 1
}
纯手打,请忽视语法错误
⑺ 数据结构的顺序栈的要点和难点是什么...
线性表的结构特点
线性表的顺序存储方式及其查找、插入、删除运算实现
线性表的链式存储方式及其查找、插入、删除运算实现
线性表的顺序存储及链式存储情况下其不同的优缺点比较
线性链表的合并与拆分
⑻ 基于顺序栈的简单算起术表达式求值课程设计
设计一个程序,演示用算符优先法对算术表达式求值的过程。
利用算符优先关系,实专现对算术四则混合运算属表达式的求值。 (1)输入的形式:表达式,例如2*(3+4) 包含的运算符只能有'+' 、'-' 、'*' 、'/' 、'('、 ')'; (2)输出的形式:运算结果,
⑼ 数据结构 顺序栈
楼主你好,栈的基本运算有6种
(1)InitStack(S):构造一个空栈
(2)StackEmpty(S):判断栈空,空返回true,否则为false
(3)StackFull(S):判断栈满,满返回true,否则为false
(4)Push(S,x):若栈不满将x插入到栈顶
(5)Pop(S):退栈,若栈非空,将栈顶元素删去,并返回该元素.
(6)StackTop(S):取栈顶元素。若栈非空,返回栈顶元素,但不改变栈的状态。
#include <stdio.h>
#define StackSize 10
typedef int DataType;
typedef struct{
DataType data[StackSize];
int top;
}SeqStack;
void InitStack(SeqStack *S){ //初始化栈
S->top=-1;
}
int StackEmpty(SeqStack *S){//判栈空
return S->top==-1;
}
int StackFull(SeqStack *S){//判栈满
return S->top==StackSize-1;
}
void Push(SeqStack *S,DataType x){//进栈
if(StackFull(S)){
printf("Stack overflow!");
exit(1);
}
S->data[++S->top]=x;
}
DataType Pop(SeqStack *S){//出栈
if(StackEmpty(S)){
printf("Stack underflow!");
exit(1);
}
return S->data[S->top--];
}
DataType StackTop(SeqStack *S){//取栈顶元素
if(StackEmpty(S)){
printf("Stack is empty");
exit(1);
}
return S->data[S->top];
}
void main(){
int i;
SeqStack S;
InitStack(&S);
for(i=0;i<StackSize;i++)
Push(&S,i);
for(i=StackSize-1;i>=0;i--)
printf("%d ",Pop(&S,i));
}
设计要点:
(1):建立一个结构体作为顺序栈的类型;
(2):理解栈的6种操作;
(3):避免上溢和下溢的发生。
希望能够帮助到你。