(1)棧
package ChapterOne; public class Stack { //棧數組 long stackArr[]; //棧的大小 int maxSize; //棧的頂部 int top; //初始化一個大小為size的棧 public Stack(int size){ maxSize = size; stackArr = new long[size]; top = -1; } //出棧操作 public long pop(){ return stackArr[top--]; } //進棧操作 public void push(long value){ stackArr[++top] = value; } //判斷棧是否為空白 public boolean isEmpty(){ return top == -1; } //判斷棧是否已滿 public boolean isFull(){ return top == maxSize-1; } //取棧頂元素 public long peek(){ return stackArr[top]; } public static void main(String[] args) { Stack stack = new Stack(10); while(!stack.isFull()){ long v = (long) (Math.random()*100); stack.push(v); System.out.print(v+" "); } System.out.println(); while(!stack.isEmpty()){ long topValue = stack.pop(); System.out.print(topValue+" "); } System.out.println(); } } (2)隊列
package ChapterOne; public class Queue { //隊列數組 private long queueArr[]; //隊列的前端下標 private int front; //隊列的尾端下標 private int rear; //隊列的大小 private int maxSize; //隊列中元素的個數 private int nItems; //初始化一個大小為size的隊列 public Queue(int size){ queueArr = new long[size]; maxSize = size; front = 0; rear = -1; nItems = 0; } //插入操作 public void insert(long value){ //隊列已滿 if(rear == maxSize-1) rear = -1; queueArr[++rear] = value; nItems++; } //刪除操作 public long remove(){ long temp = queueArr[front++]; if(front == maxSize) front = 0; nItems--; return temp; } //返回隊列第一個元素 public long peakFront(){ return queueArr[front]; } //判斷是否為空白 public boolean isEmpty(){ return nItems == 0; } //判斷是否已滿 public boolean isFull(){ return nItems == maxSize; } //返回隊列中元素的個數 public int size(){ return nItems; } public void print(){ for(int i = front;i < front+nItems;i++){ System.out.print(queueArr[i]+" "); } System.out.println(); } public static void main(String[] args) { Queue q = new Queue(10); while(!q.isFull()){ long value = (long)(Math.random()*100); q.insert(value); } q.print(); while(!q.isEmpty()){ q.remove(); q.print(); } q.print(); System.out.println(q.isEmpty()); } } (3)優先隊列
package ChapterOne; public class PriorityQueue { private int nItems; private long pqArr[]; private int maxSize; public PriorityQueue(int size){ maxSize = size; pqArr = new long[size]; nItems = 0; } public void insert(long value){ int i; if(nItems == 0) pqArr[nItems++] = value; else{ for(i = nItems-1;i >= 0;i--){ if(value < pqArr[i]){ pqArr[i+1] = pqArr[i]; } else break; } pqArr[i+1] = value; nItems++; } } public long remove(){ return pqArr[--nItems]; } public boolean isEmpty(){ return nItems == 0; } public boolean isFull(){ return nItems == maxSize; } public void print(){ for(int i = 0;i < nItems;i++) System.out.print(pqArr[i]+" "); System.out.println(); } public static void main(String[] args) { PriorityQueue pq = new PriorityQueue(10); while(!pq.isFull()){ long value = (long)(Math.random()*100); pq.insert(value); } pq.print(); } }(4)雙鏈表
class Chain{ Chain pre=null,next=null; int id; String name;}class List{ private Chain header=new Chain(); public Chain add(int id,String name){ //在鏈表尾添加節點 Chain current=new Chain(); //建立鏈表頭 Chain temp=header; while(temp.next!=null) //迴圈至鏈表尾 temp=temp.next; temp.next=current; current.pre=temp; current.id=id; current.name=name; return current; } public Chain remove(int id){ //刪除指定id的節點 Chain temp=header; Chain current=null; while(temp.next!=null){ temp=temp.next; if(temp.id==id){ current=temp; break; } } if(current==null) return null; current.pre.next=current.next; if(current.next!=null) current.next.pre=current.pre; return current; } public Chain remove(String name){ //刪除指定name的節點 Chain temp=header; Chain current=null; while(temp.next!=null){ temp=temp.next; if(temp.name==name){ current=temp; break; } } if(current==null) return null; current.pre.next=current.next; if(current.next!=null) current.next.pre=current.pre; return current; } public Chain remove(){ //刪除最後一個節點 Chain temp=header; while(temp.next.next!=null){ temp=temp.next; } temp.next=null; return temp; } public void clear(){ //刪除所有節點 header.next=null; } public Chain insert(int id,String name,int pos){ //在指定位置插入節點 Chain temp=header; Chain current=new Chain(); int i=0; for(i=0;i<=pos;i++){ if(temp.next!=null){ temp=temp.next; } else{ return null; } } current.id=id; current.name=name; if(temp.next!=null){ temp.next.pre=current; current.next=temp.next; } temp.next=current; current.pre=temp; return current; } public void print_all(){ Chain temp=header; System.out.println("--------------------------------------"); while(temp.next!=null){ temp=temp.next; System.out.println("ID: "+temp.id); System.out.println("Name: "+temp.name); } System.out.println("--------------------------------------"); }}public class ChainList{ public static void main(String[] args){ List a=new List(); a.add(1,"譚孟瀧1") ; a.add(2,"譚孟瀧2"); a.add(3,"譚孟瀧3"); a.add(4,"譚孟瀧4"); a.insert(12,"大胖",2); a.print_all(); }}