实现一个栈操作。

 1 import java.util.*;
 2 
 3 public class Stacks {
 4     static String[] months={"January","February","March","April","May","June",
 5         "July","August","September","October","November"};//定义字符串数组,使用大括号括了几个带双引号的字符串。
 6     
 7     public static void main(String[] args){
 8         Stack stk=new Stack();
 9         for(int i=0;i<months.length;i++){
10             stk.push(months[i]+"");
11             System.out.println("stk="+stk);
12             //把栈当作一个Vector。
13             stk.addElement("The last line");
14             System.out.println("element S="+stk.elementAt(5));
15             System.out.println("popping elements:");
16             while(!stk.empty())
17                 System.out.println(stk.pop());
18         
19     }
20     
21 
22 }
23 }

前面多加了一对{},导致出错了。正确的代码,去掉那俩大括号,一对。。。

 1 import java.util.*;
 2 
 3 public class Stacks {
 4     static String[] months={"January","February","March","April","May","June",
 5         "July","August","September","October","November"};//定义字符串数组,使用大括号括了几个带双引号的字符串。
 6     
 7     public static void main(String[] args){
 8         Stack stk=new Stack();
 9         for(int i=0;i<months.length;i++)
10             stk.push(months[i]+"");
11             System.out.println("stk="+stk);
12             //把栈当作一个Vector。
13             stk.addElement("The last line");
14             System.out.println("element S="+stk.elementAt(5));
15             System.out.println("popping elements:");
16             while(!stk.empty())
17                 System.out.println(stk.pop());
18         
19     }
20     
21 
22 }

 

转载于:https://www.cnblogs.com/meihao1989/p/3305041.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
共享是指两个共享同一块内存空间,它们分别从两端开始向中间生长,当两个顶指针相遇时,就称为满。共享的基本操作包括:初始化、入、出、判断空和满、获取顶元素等。 下面是共享实现代码: ```c #include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 typedef struct { int data[MAXSIZE]; int top1; // 1的顶指针 int top2; // 2的顶指针 } ShareStack; // 初始化共享 void initShareStack(ShareStack *s) { s->top1 = -1; // 1的顶指针初始化为-1 s->top2 = MAXSIZE; // 2的顶指针初始化为MAXSIZE } // 判断1是否为空 int isStack1Empty(ShareStack *s) { return s->top1 == -1; } // 判断2是否为空 int isStack2Empty(ShareStack *s) { return s->top2 == MAXSIZE; } // 判断共享是否已满 int isShareStackFull(ShareStack *s) { return s->top1 + 1 == s->top2; } // 共享操作 int pushShareStack(ShareStack *s, int stackNo, int x) { if (isShareStackFull(s)) { printf("Share Stack is full!\n"); return 0; } if (stackNo == 1) { // 向1中入 s->data[++s->top1] = x; } else if (stackNo == 2) { // 向2中入 s->data[--s->top2] = x; } else { printf("Invalid stack number!\n"); return 0; } return 1; } // 1出操作 int popStack1(ShareStack *s, int *x) { if (isStack1Empty(s)) { printf("Stack1 is empty!\n"); return 0; } *x = s->data[s->top1--]; return 1; } // 2出操作 int popStack2(ShareStack *s, int *x) { if (isStack2Empty(s)) { printf("Stack2 is empty!\n"); return 0; } *x = s->data[s->top2++]; return 1; } // 获取1的顶元素 int getStack1Top(ShareStack *s, int *x) { if (isStack1Empty(s)) { printf("Stack1 is empty!\n"); return 0; } *x = s->data[s->top1]; return 1; } // 获取2的顶元素 int getStack2Top(ShareStack *s, int *x) { if (isStack2Empty(s)) { printf("Stack2 is empty!\n"); return 0; } *x = s->data[s->top2]; return 1; } int main(void) { ShareStack s; initShareStack(&s); pushShareStack(&s, 1, 10); pushShareStack(&s, 2, 20); pushShareStack(&s, 1, 30); pushShareStack(&s, 2, 40); int x; popStack1(&s, &x); printf("%d\n", x); popStack2(&s, &x); printf("%d\n", x); getStack1Top(&s, &x); printf("%d\n", x); getStack2Top(&s, &x); printf("%d\n", x); return 0; } ``` 上面的代码实现了共享的基本操作,包括初始化、入、出、判断空和满、获取顶元素等。其中,1的顶指针从数组的左边开始,2的顶指针从数组的右边开始,两个向中间生长。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值