資料結構鏈式佇列

2021-08-18 20:56:30 字數 2151 閱讀 1037

對佇列進行以下操作:

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中存有此節點存於佇列中的元素以及指向下乙個元素的指標。鏈式佇列的需要儲存指向隊頭和隊尾的指標的...