自己写了个简单的实现
创新互联公司专注于崂山网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供崂山营销型网站建设,崂山网站制作、崂山网页设计、崂山网站官网定制、微信小程序开发服务,打造崂山网络公司原创品牌,更为您提供崂山网站排名全网营销落地服务。
class QueueE{
private Object[] integerQueue;//用来当队列
public int tail;//队尾
public int size;//队的长度,也可以设置一个默认值,溢出时从新申请
public Queue(int size){
integerQueue=new Object[size];
this.size=size;
tail=-1;
}
/**
* 将元素插入队列
* @return 如果该元素已添加到此队列,则返回 true;否则返回 false
*/
public boolean offer(E e){
if(tail size-1){
tail++;
this.integerQueue[tail]=e;
return true;
}else{
return false;
}
}
/**
* 获取并移除此队列的头,如果此队列为空,则返回 null。
*/
public E poll(){
Object tmp;
if(tail=0){
tmp=this.integerQueue[tail];
tail--;
return (E)tmp;
}else{
return null;
}
}
}
import java.util.Vector;
@SuppressWarnings({ "unchecked", "serial" })
public class Stat extends Vector {
public void push(Object x) {
super.add(x); // 向队尾添加组件
}
public Object pop() { // 队首元素出队(从队列删除)
Object x = super.elementAt(0); // 返回指定索引处的组件
super.removeElementAt(0); // 删除指定索引处的组件
return x;
}
public void remove() {
super.removeAllElements(); // removeAllElements()移除全部组件,并将其大小设置为零
}
public static void main(String[] args) throws java.io.IOException {
Stat s = new Stat();
s.push("123adfasf123");
s.push(123123132);
System.out.println(s.pop());
System.out.println(s.pop());
}
}
// s1是容量为n的栈,栈中元素类型是elemtp。本函数将x入栈,若入栈成功返回1,否则返回0。
int enqueue( stack s1, elemtp x )
{
if( top1==n !Sempty(s2) ) // top1是栈s1的栈顶指针,是全局变量
{
// s1满、s2非空,这时s1不能再入栈
printf(“栈满”);
return(0);
}
if( top1==n Sempty(s2) ) // 若s2为空,先将s1退栈,元素再压栈到s2
{
while( !Sempty(s1) )
POP( s1, x );
PUSH( s2, x );
}
PUSH( s1, x ); // x入栈,实现了队列元素的入队
return(1);
}
// s2是输出栈,本函数将s2栈顶元素退栈,实现队列元素的出队
void dequeue( stack s2, stack s1 )
{
if( !Sempty(s2) ) // 栈s2不空,则直接出队
{
POP( s2, x );
printf( “出队元素为”, x );
}
else if( Sempty(s1) ) // 处理s2空栈。若输入栈也为空,则判定队空
{
printf(“队列空”);
exit(0);
}
else // 先将栈s1倒入s2中,再作出队操作
{
while( !Sempty(s1) )
{
POP( s1, x );
PUSH( s2, x );
}
POP( s2, x ); // s2退栈相当队列出队
printf( “出队元素为”, x );
}
}
// 本函数判用栈s1和s2模拟的队列是否为空
int queue_empty()
{
if( Sempty(s1) Sempty(s2) ) // 队列空
return(1);
else
return(0); //队列不空。
}
#include stdlib.h
#include stdio.h
typedef struct
{
char *base;
char *top;
int stack_size;
}stack;
void init_stack(stack *s)
{
s-base=(char *)malloc(50*sizeof(char));
if(!s-base)return;
s-top=s-base;
s-stack_size=50;
}
void push(stack *s,char e)
{
if(s-top-s-base=s-stack_size)
{
s-base=(char *)realloc(s-base,(s-stack_size+50)*sizeof(char));
if(!s-base)return;
s-top=s-base+s-stack_size;
s-stack_size+=50;
}
*(s-top)=e;
s-top++;
}
void pop(stack *s,char *e)
{
s-top--;
*e=*(s-top);
}
int stack_empty(stack *s)
{
if(s-top==s-base)return 1;
return 0;
}
int queue_empty(stack *s1,stack *s2)
{
if(stack_empty(s1)stack_empty(s2))return 1;
return 0;
}
void dequeue(stack *s1,stack *s2,char *a) /*s1负责入队,s2负责出队*/
{ /*出队之前 */
char e; /*先把s1倒灌到s2里面*/
if(!queue_empty(s1,s2)) /*这样把最先入队的暴露在最外面*/
{
while(!stack_empty(s1))
{
pop(s1,e);
push(s2,e);
}
pop(s2,a);
}
}
void enqueue(stack *s1,stack *s2,char a)
{
char e;
while(!stack_empty(s2))
{
pop(s2,e);
push(s1,e);
}
push(s1,a);
}
main()
{
char e,*a="good good study day day up";
int i=0;
stack s1,s2;
init_stack(s1);
init_stack(s2);
while(a[i])
{
enqueue(s1,s2,a[i]);
i++;
}
while(!queue_empty(s1,s2))
{
dequeue(s1,s2,e);
printf("%c",e);
}
getch();
}
import java.util.ArrayList;
/**
*
* @author 狱韬
*/
public class SnakeBody {
private int size=0; //队列的长度
private int cursor=-1; //指针
private ArrayListint[] list=null; //存储器
public SnakeBody() {
list=new ArrayListint[](); //存储器
}
//返回底部的数据
public int[] getLast(){
return list.get(list.size()-1);
}
//返回顶部的数据
public int[] getFirst(){
return list.get(0);
}
//压入数据
public void put(int[] arry){
list.add(arry);
}
//删除底部数据
public void removeLast(){
list.remove(list.size()-1);
}
//重置
public void reSet(){
list=new ArrayListint[](); //存储器
}
//删除顶部数据
public void removeFirst(){
list.remove(0);
}
//返回数据长度
public int size(){
return list.size();
}
public static void main(String[] args) {
SnakeBody data = new SnakeBody();
for(int i=0;i10;i++){
data.put(new int[]{0,i});
}
System.out.println(data.getFirst()[0]+"-------"+data.getFirst()[1]);
System.out.println(data.getLast()[0]+"-------"+data.getLast()[1]);
data.removeLast();
System.out.println(data.getFirst()[0]+"-------"+data.getFirst()[1]);
System.out.println(data.getLast()[0]+"-------"+data.getLast()[1]);
}
}
import java.util.*;
public class MyQueueT {
private LinkedListT list = new LinkedListT();
public void addLast(T v) {
list.addLast(v); //队尾插入
}
public T getFirst() {
return list.getFirst(); //取得队受元素
}
public void remove() {
list.removeFirst(); //移除队首元素
}
//类似功能自己扩展下
public static void main(String[] args) {
MyQueueString mq = new MyQueueString();
mq.addLast("hello world");
mq.addLast("hello world2");
System.out.println(mq.getFirst());
mq.remove();
System.out.println(mq.getFirst());
}
}