佇列(queue):在邏輯上是一種線性儲存結構。它有以下幾個特點:
1、佇列中資料是按照"先進先出(fifo, first-in-first-out)"方式進出佇列的。
2、 佇列只允許在"隊首"進行刪除操作,而在"隊尾"進行插入操作。
佇列通常包括的兩種操作:入佇列 和 出佇列。
底層可以由陣列(順序表),鍊錶實現。
基於陣列實現的單向佇列:
#include
#include
static
int*queue=
null
;//指向佇列
static
int count=0;
//元素數量
static
int maxsize=20;
//佇列容量
//建立佇列
int*
create_queue()
return queue;
//返回佇列
}//判空
intempty()
return0;
}//判滿
intfull()
return0;
}//入隊
void
enqueue
(int e)
queue[count++
]=e;
printf
("enqueue successful!!\n");
}//出隊
intdequeue()
int n=queue[0]
;for
(int i=
0;i) count--
;return n;
}//遍歷
void
display()
printf
("遍歷結束\n");
}//銷毀佇列
void
destory()
printf
("destory!!!");
}
主函式:
int
main()
輸出:
enqueue successful!!
enqueue successful!!
enqueue successful!!
enqueue successful!!
enqueue successful!!
enqueue successful!!
佇列有6個元素
the data is 2
the data is 8
the data is 108
the data is 99
the data is 9
the data is 4
遍歷結束
佇列有4個元素
the data is 108
the data is 99
the data is 9
the data is 4
遍歷結束
destory!!!
基於鍊錶實現的單向佇列
#include
#include
typedef
struct queue
queue;
static
int count=0;
//數量
static queue *head=
null
;//隊首
static queue *tail=
null
;//隊尾
//節點初始化
queue *
init()
//建立佇列
queue *
create_queue()
count++
;return head;
}//判空
intempty()
return0;
}//入隊
void
enqueue
(int e)
//出隊
intdequeue()
queue *p=head->next;
int n=p->data;
head->next=p->next;
free
(p);
count--
;printf
("dequeue!!\n");
return n;
}//遍歷
void
display()
printf
("佇列中有%d個元素\n"
,count)
; queue *p=head->next;
for(
int i=
1;i)printf
("display close!\n");
}
主函式:
int
main()
輸出:
enqueue!
enqueue!
enqueue!
enqueue!
enqueue!
enqueue!
佇列中有7個元素
the data is 2
the data is 8
the data is 108
the data is 99
the data is 9
the data is 4
display close!
dequeue!!
dequeue!!
佇列中有5個元素
the data is 108
the data is 99
the data is 9
the data is 4
display close!
資料結構與演算法學習目錄 資料結構之佇列(C語言版)
佇列的鏈式儲存結構 總結佇列 是只允許在一端進行插入操作,而在另一端進行刪除操作。可以是表頭,也可以是表尾 我們可以看到,佇列其實也是線性表的一種,佇列的意思其實就和他的名字一樣,他的儲存特點就像乙個一堆資料排隊一樣,先排到隊裡面的資料就先出來 first in first out 簡稱fifo。允...
資料結構(C語言版) 佇列
1 佇列 在表的一端插入,表的另一端刪除,允許插入的一端為隊尾,允許刪除的一端為隊頭。先進先出fifo。2 佇列的基本操作 initqueue q 構造空佇列 destroyqueue q 銷毀佇列 clearqueue q 清空佇列 queueempty q 判斷佇列是否為空 queuelengt...
資料結構(C語言版)
用棧實現數字的進製轉換 10轉8 棧 限定只能在表尾進行插入或者刪除操作的線性表 特點 先進後出 儲存表示方法 順序棧和鏈棧 本文用的順序棧 實現 readonly name code class c include include define stack init size 100 儲存空間初始...