對佇列進行以下操作:
1.入佇列
2.出佇列
3.取隊首元素
佇列先進先出,要想實現入佇列,從隊尾插入元素;要想實現出佇列,從隊首刪除元素。在這裡,我們定義頭尾指標,首先對空佇列插入元素,讓頭指標等於尾指標,如果非空,依然讓頭指標指向隊首,尾指標指向要插入的元素。刪除元素時,直接讓頭指標指向下乙個元素,要刪除的元素就成了無效的元素,這也就完成了頭刪。取隊首元素時,函式的返回值代表是否取成功,0表示失敗,1表示成功,這裡用乙個輸出型引數value,把返回的元素放在value對應的記憶體當中,也就取出了這個元素。
linkqueue.h
//不帶頭結點的不帶環的單向鏈式佇列
#pragma once
#include
#include
#include
typedef char linktype;
typedef struct linknodelinknode;
typedef struct linkqueuelinkqueue;
void linkqueueinit(linkqueue* queue);//初始化函式
void lqprintchar(linkqueue* queue, const char* msg);//列印函式
linknode* linknodecreate(linktype value);//建立節點
void destroynode(linkqueue* queue);//銷毀節點
linknode* linkqueuepush(linkqueue* queue, linktype value);//入佇列
void linkqueuepop(linkqueue* queue);//出佇列
int linkqueuefront(linkqueue* queue, linktype* value);//取隊首元素
linkqueue.c
#include "linkqueue.h"
void linkqueueinit(linkqueue* queue)
queue->head = null;
queue->tail = null;
}void lqprintchar(linkqueue* queue, const char* msg)
printf("%s\n", msg);
printf("隊首 ");
linknode* cur = queue->head;
for (; cur != null; cur = cur->next)
printf(" 隊尾\n");
}linknode* linknodecreate(linktype value)
void destroynode(linkqueue* queue)
linknode* linkqueuepush(linkqueue* queue, linktype value)
linknode* newnode = linknodecreate(value);
if (queue->head == null)
queue->tail->next = newnode;
queue->tail = queue->tail->next;
return queue->head;
}void linkqueuepop(linkqueue* queue)
if (queue->head == null)
queue->head = queue->head->next;
}int linkqueuefront(linkqueue* queue, linktype* value)
if (queue->head == null)
*value = queue->head->data;
return 1;
test.c
#include "linkqueue.h"
#define test_header printf("\n********************=%s********************==\n",__function__);
void testinit()
void testpush()
int main()
資料結構之鏈式佇列
我們實現了順序佇列,包括優化,現在我們再來學習下鏈式佇列。注 這裡還是要包含前面我們實現的鏈式鍊錶的標頭檔案和實現檔案。第十個例子,鏈式佇列的實現 標頭檔案 ifndef linkqueue h define linkqueue h typedef void linkqueue linkqueue ...
c 資料結構 鏈式佇列
1.標頭檔案 includeusing namespace std struct linknode linknode const int x,linknode ptr null date x link ptr class linkedqueue 建構函式 構造空佇列 void makeempty 將...
資料結構 鏈式佇列 Linked queue
08年9月入學,12年7月畢業,結束了我在軟體學院愉快豐富的大學生活。此系列是對四年專業課程學習的回顧,索引參見 鏈式佇列是不同於迴圈陣列的另一種佇列的實現形式。佇列中的元素以node形式儲存。節點node中存有此節點存於佇列中的元素以及指向下乙個元素的指標。鏈式佇列的需要儲存指向隊頭和隊尾的指標的...