順序佇列,就是陣列,不多贅述
鏈式佇列就是用鍊錶來實現佇列,像鍊錶一樣,在頭部增加頭部指標指向頭結點,在尾部增加尾部指標指向隊尾節點。
**如下:
/*
鏈式佇列,也就是用鍊錶實現的對列,用指標指向頭結點做front,尾部也來乙個指標指向rear,而當front和rear相等時,隊列為空
*/#include #include typedef struct linkqueue//節點
myqueue;
typedef struct//存放頭和尾指標,能夠找到這兩
pqueue;
//初始化
void init(pqueue *q)
q->rear = q->front;//rear只用到指標作用,無需分配記憶體
q->rear->next = null;
}//入隊
void enqueue(pqueue *q, int x)
pnew->data = x;
pnew->next = null;
q->rear->next = pnew;//將pnew連線到末尾
q->rear = pnew;//將尾指標指向新插入的尾結點
}//出隊
void outqueue(pqueue *q)
myqueue *p = q->front->next;//指向第乙個節點
q->front->next = p->next;
if(q->rear == p)//如果只有乙個元素
free(p);
p = null; }
//遍歷
void display(pqueue *q)
myqueue *p = q->front->next;
while(p != q->rear->next) }
int main()
//printf("出對乙個\n");
//outqueue(p);
display(p);
enqueue(p,7);
printf("入乙個7\n");
display(p);
printf("出對5次\n");
for(i = 1;i < 6; i++)
display(p);
printf("入隊5個元素\n");
for(i = 1;i < 6; i++)//入隊5個元素
display(p);
printf("出兩個\n");
outqueue(p);
outqueue(p);
display(p);*/
delete(p);
p = null;
return 0;
}
迴圈佇列:
說到迴圈佇列,先說順序佇列,
在順序佇列中,front作為佇列頭部下標,rear作為佇列尾部下標,當隊列為空時,front == rear。當有元素入隊,放入rear下標元素中,然後rear後移一位,入隊就按照這個規程往後。這樣很方便但會產生乙個假溢位的問題,如下圖:
如圖所見,front前面還有空位,但rear已經溢位,明明還有多餘位置,但系統已經判斷溢位,造成很大浪費。
那怎麼解決?迴圈佇列:
**如下:
#define max 5
typedef struct queue
myqueue;
//初始化
void init(myqueue *q)
//入隊
void enqueue(myqueue *q,int x)
q->data[q->rear] = x;
q->rear = (q->rear + 1)%max;
//printf("%d入隊\n",x);
}//出隊
void outqueue(myqueue *q)
q->front = (q->front + 1)%max;
}//遍歷
void display(myqueue *q)
}//佇列長度
int getlength(myqueue *q)
資料結構 佇列實現(順序迴圈佇列 鏈式佇列)
佇列的介面 public inte ce qqueue 存在假溢位問題!不建議使用 使用模擬迴圈的方式避免假溢位 實現 package pers.zhang.queue author zhang date 2020 1 17 11 45 順序迴圈佇列 public class seqqueue im...
資料結構 佇列 順序儲存結構佇列 鏈式儲存結構佇列
佇列是一種只允許在一端進行插入操作,而在另外一端進行刪除操作的線性表,特徵是先進先出,包括 順序儲存結 構佇列 鏈式儲存結構佇列。重點說明 迴圈佇列和鏈隊。在佇列中front為隊頭指標 rear為隊尾指標 佇列 佇列空的條件 rear front 佇列滿的條件 rear 1 queuesize fr...
資料結構 分別實現順序佇列和鏈式佇列
順序佇列 seqqueue.h pragma once include include define title printf n s function define seqqueuemaxsize 1000 typedef char seqqueuetype typedef struct seqq...