潍坊市建设一体化平台网站,手机优化怎么关闭,青岛网页设计学校,莱芜规划之前我们对链表进行了讲解#xff0c;这次我们来用链表的方式来实现栈和队列两个接口#xff0c;来加深我们对链表的理解。
一、链栈 栈的接口与顺序栈的接口相同#xff0c;这里我们主要展示如何用我们自己写的链表来实现这个接口#xff0c;代码展示如下#xff1a;
接… 之前我们对链表进行了讲解这次我们来用链表的方式来实现栈和队列两个接口来加深我们对链表的理解。
一、链栈 栈的接口与顺序栈的接口相同这里我们主要展示如何用我们自己写的链表来实现这个接口代码展示如下
接口实现类
public class LinkedStackT implements Stack_iT{private LinkedListT stack;public LinkedStack() {this.stack new LinkedList();}Overridepublic boolean push(T e) {return stack.addFirst(e);}Overridepublic T pop() {return stack.removeFirst();}Overridepublic T peek() {return stack.getFirst();}Overridepublic int getLength() {return stack.getLength();}Overridepublic boolean isEmpty() {return stack.isEmpty();}
}对我们的链栈进行测试
import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class testMyStack {public static void test(Stack_iInteger stack, ListInteger list){Random random new Random();for(int i 0;i 10;i){stack.push(random.nextInt(1000));System.out.println(stack.peek()——现在还有stack.getLength()个元素);}Integer temp;while ((temp stack.pop())!null){list.add(temp);}System.out.println();}public static void main(String[] args) {ListInteger list new ArrayList();Stack_iInteger stack new LinkedStack();test(stack,list);for (Integer i:list) {System.out.println(i);}}
}
输出结果 二、链队列 这里接口也是与顺序队列的相同直接进行代码展示
接口实现类
public class LinkedQueueT implements Queue_iT{private LinkedListT queue;public LinkedQueue() {this.queue new LinkedListT();}Overridepublic boolean offer(T e) {return queue.addFirst(e);}Overridepublic T poll() {return queue.removeLast();}Overridepublic T peek() {return queue.getFirst();}Overridepublic int getLength() {return queue.getLength();}Overridepublic boolean isEmpty() {return queue.isEmpty();}Overridepublic T peekLast() {return queue.getLast();}
}
对我们的链队列进行测试
import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class testMyQueue {public static void test(Queue_iInteger queue){ListInteger list new ArrayList();Random random new Random();for(int i 0;i 16;i){queue.offer(random.nextInt(100));System.out.println(queue.peek()——现在还有queue.getLength()个元素);}Integer temp;for(int i 0;i 2;i){System.out.println(queue.poll());}for(int i 0;i 5;i){queue.offer(random.nextInt(100));System.out.println(queue.peek()——现在还有queue.getLength()个元素);}while ((temp queue.poll())!null){list.add(temp);}for (Integer i:list) {System.out.println(i);}}public static void main(String[] args) {Queue_iInteger queue new LinkedQueue();test(queue);}
}输出结果 三、总结 在日常使用中链队列用的多一点且在链队列之上又有了双端队列等应用说明链表在Java中十分重要。