实验三 栈和队列

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告三栈和队列

一、实验目的:

(1)掌握栈的基本操作的实现方法。

(2)利用栈先进后出的特点,解决一些实际问题。

(3)掌握链式队列及循环队列的基本操作算法。

(4)应用队列先进先出的特点,解决一些实际问题。

二、实验内容:

1、使用一个栈,将一个十进制转换成二进制。

粘贴源程序:

package Q1;

public class SeqStack {

public int element[];

public int top;

public static SeqStack p;

public SeqStack(int size){

this.element=new int[size];

this.top=-1;

}

public void push(int x){

this.top++;

this.element[this.top]=x;

}

public int pop(){

return this.top==-1 ? -1: (int)this.element[this.top--];

}

public int get(){

return this.top==-1 ? -1: (int)this.element[this.top];

}

public static void disp(SeqStack p){

int t = -2;

while(t!=-1){

t=p.pop();

if(t!=-1)

System.out.printf("%d",t);

}

}

public static void fun(int x){

int t;

while(x!=1){

t=x%2;

x=x/2;

p.push(t);

}

if(x==1)

p.push(x);

}

public static void main(String args[]){

p=new SeqStack(13);

fun(99);

disp(p);

}

}

粘贴测试数据及运行结果:

2、回文是指正读反读均相同的字符序列,如“acdca”、“dceecd”均是回文,但“book”不是回文。利用1中的基本算法,试写一个算法判定给定的字符串是否为回文。(提示:将一半字符入栈,依次弹出与另一半逐个比较)

粘贴源程序:

package Q2;

public class SeqStack {

public int element[];

public int top;

public static SeqStack p;

public SeqStack(int size){

this.element=new int[size];

this.top=-1;

}

public void push(int x){

this.top++;

this.element[this.top]=x;

}

public int pop(){

return this.top==-1 ? -1: (int)this.element[this.top--];

}

public int get(){

return this.top==-1 ? -1: (int)this.element[this.top];

}

public static void input(String str){

int i=0;

int t=str.length();

if(t%2==0){

for(i=0;i

p.push(str.charAt(i));

}else{

for(i=0;i<=t/2;i++)

p.push(str.charAt(i));

}

}

public static boolean compare(String str,SeqStack p){

boolean flag = true;

char t;

int length=str.length();

if(length%2==0){

for(int i=0;i

t=str.charAt(length/2+i);

if(t!=p.pop()){

flag=false;break;

}

}

}else{

for(int i=0;i

t=str.charAt(length/2+i);

if(t!=p.pop()){

flag=false;break;

}

}

}

return flag;

}

public static void main(String[] args) {

boolean flag;

p=new SeqStack(100);

String str =new String("acbca");

p.input(str);

flag=pare(str, p);

if(flag==true)

System.out.println("yes");

else System.out.println("No");

}

}

粘贴测试数据及运行结果:

3、使用3个队列分别保留手机上最近10个“未接来电”、“已接来电”、“已拨电话”。

相关文档
最新文档