数据结构(java)——栈和队列

今天的是一些数据结构中栈和队列的基本操作,算是作为用java描述数据结构的一个开始。

之前学的都是用c语言描述,现在因为开始准备java方向的一些事情,所以打算开始过一遍java的数据结构。

   栈的特点是,栈里面的元素是先进后出的形式。比如把1,2,3依次放进一个栈里面,取出之后的顺序就变成了3,2,1。栈在java里是用数组的形式表现,相当于是吧一个一个的数存进数组里,然后设置一个top表示当前最高位,采用arr[top]的形式读入和取出栈顶元素。下面看代码的实现:

    MyStack类:
public class MyStack {
	//数组实现
	private long arr[];
	private int top;
	
	//默认
	public MyStack() {
		arr = new long[10];
		top = -1;
	}
	
	//带参构造方法
	public MyStack(int maxsize) {
		arr = new long[maxsize];
		top = -1;
	}
	
	//加入数据
	public void push(int data) {
		arr[++top] = data;
	}
	
	//pop移除数据
	public long pop() {
		return arr[top--];
	}
	
	//查看数据
	public long LookTopData() {
		return arr[top];
	}
	
	//判断是否为空
	public boolean isEmpty() {
		return top == -1;
	}
	
	//判断是否满
	public boolean isFull() {
		return top == arr.length - 1;
	}
}

测试程序:(省略了public static void main等框架)
//测试栈
MyStack a = new MyStack(4);
a.push(23);
a.push(12);
a.push(1);
a.push(90);
System.out.println(a.isEmpty());
System.out.println(a.isFull());
System.out.println(a.LookTopData());
while(!a.isEmpty()) {
	System.out.println(a.pop()+" ");
}

队列

   队列的特点是,队列里面的元素是先进先出的形式。比如把1,2,3依次放进一个队列里面,取出之后的顺序就仍然是1,2,3。队列在java里也是用数组的形式表现,相当于是吧一个一个的数存进数组里,然后设置一个队头和队尾,采用数组循环存放的形式实现队列。下面看代码的实现:

MyQueue类:
public class MyQueue {
	//底层使用数组
	private long[] arr;
	//大小
	private int elements;
	//队头
	private int front;
	//队尾
	private int end;
	
	//默认构造方法
	public MyQueue() {
		arr = new long[10];
		elements = 0;
		front = 0;
		end = -1;
	}
	
	//带参数构造方法,参数为数组大小
	public MyQueue(int maxsize) {
		arr = new long[maxsize];
		elements = 0;
		front = 0;
		end = -1;
	}
	
	//添加数据
	public void insert(long data) {
		if(end == arr.length - 1 ) {
			end = -1;
		}
		arr[++end] = data;
		elements++;
	}
	
	//删除数据,从队头删除
	public long remove() {
		long data = arr[front++];
		if(front == arr.length) {
			front = 0;
		}
		elements--;
		return data;
	}
	
	//查看数据,队头
	public long Look() {
		return arr[front];
	}
	
	//判断是否为空
	public boolean isEmpty() {
		return elements == 0;
	}
	
	//判满
	public boolean isFull() {
		return elements == arr.length;
	}
	
}

测试程序:(省略了public static void main等框架)

MyQueue mq = new MyQueue(4);
mq.insert(23);
mq.insert(45);
mq.insert(13);
mq.insert(1);
		
System.out.println(mq.isEmpty());
System.out.println(mq.isFull());
		
System.out.println(mq.Look());
		
while(!mq.isEmpty()) {
	System.out.print(mq.remove() + " ");
}
阅读更多
换一批

没有更多推荐了,返回首页