#include<stdio.h>java
#include<stdlib.h>node
typedef int elementType;this
typedef struct q_node{指針
elementType data;code
q_node *next;隊列
}Node;內存
typedef struct Link_Node{element
struct q_node *rear; struct q_node *front;
} L_node;get
L_node* init(){it
L_node *p =(L_node *)malloc(sizeof(L_node)); if(p==NULL){ printf("內存滿了\n"); return NULL; } p->rear=p->front=NULL; printf("初始化成功\n"); return p;
}
void push_queue(L_node *p,elementType x){
//新建個節點存儲數據 Node *temp =(Node *) malloc(sizeof(Node)); if(temp== NULL) { printf("內存滿了\n"); return; } temp->data=x; temp->next=NULL; //判斷下隊列是否無元素 if(p->rear==NULL){ p->rear=temp; p->front=temp; } //若是非空,就把元素插入到隊尾指針的後面 p->rear->next=temp; //要把隊尾指針指向新建立的節點 p->rear=temp; printf("入隊列成功\n");
}
void pop_queue(L_node * p){
Node * temp = p->front; if(p->front==NULL){ printf("隊列已經空了\n"); return; } //判斷下若是隊列只有一個元素 if(p->front==p->rear){ printf("%d\n",p->front->data); p->front=NULL; p->rear=NULL; free(temp); return; } printf("%d\n",p->front->data); p->front=temp->next; free(temp);
} int main(){
L_node *s=init(); for(int i=0;i<10;i++) push_queue(s,i+1); for(int i=0;i<11;i++) pop_queue(s); return 0;
}
java實現: public class Node_queue <T>{
T data; private Node_queue<T> next; public Node_queue(T data){ this.data=data; } public Node_queue<T> getNext() { return next; } public void setNext(Node_queue<T> next) { this.next = next; }
}
public class Link_queue<T> {
private Node_queue<T> rear; private Node_queue<T> front; private int size; //初始化 public Link_queue(){ size=0; rear=front=null; } //入隊列 public void push_queue(T data){ Node_queue temp =new Node_queue(data); if(isEmpty()){ rear= front=temp; }else { rear.setNext(temp); rear=temp; } size++; System.out.println("入隊列成功"); } //出隊列 public void pop_queue(){ if(isEmpty()) throw new RuntimeException("隊列已經空了"); Node_queue temp = front; System.out.println(front.data); front=temp.getNext(); temp.setNext(null); size--; //刪除最後一個節點時,front=null,可是rear不爲空,須要將rear=null if(size==0){ rear=null; } } //判斷非空否 public boolean isEmpty(){ return front==null?true:false; } public static void main(String[] args) { Link_queue queue = new Link_queue(); boolean is=queue.isEmpty(); System.out.println(is); for(int i=0;i<10;i++) queue.push_queue(i+1); for(int i=0;i<21;i++) queue.pop_queue(); }
}