佇列的鏈式儲存

2021-09-29 15:11:46 字數 1770 閱讀 2868

基於以前的線性表實現,線性表見

linkqueue.**件

#include "stdio.h"

#include "stdlib.h"

#include "linklist.h"

typedef void linkqueue;

typedef struct _tag_linkqueuenode

tlinkqueuenode;

linkqueue* linkqueue_create();

void linkqueue_destroy(linkqueue* queue);

void linkqueue_clear(linkqueue* queue);

void* linkqueue_retrieve(linkqueue* queue);

void* linkqueue_header(linkqueue* queue);

int linkqueue_length(linkqueue* queue);

linkqueue.c檔案

#include "linkqueue.h"

linkqueue* linkqueue_create()

void linkqueue_destroy(linkqueue* queue)

//如果清空佇列,需要找出佇列中所有的節點以釋放,因為新增時分配了記憶體

void linkqueue_clear(linkqueue* queue)

linklist_clear(queue);

}//向佇列中新增元素

memset(tem,0,sizeof(tlinkqueuenode));

tem->item = item;

ret = linklist_insert(queue,(linklistnode*)tem,linklist_length(queue));

if (ret != 0)

return -1;

} return 0;

}//從佇列中刪除元素(頭部)

void* linkqueue_retrieve(linkqueue* queue)

ret = tem->item;

free(tem);

return ret;

}//獲取佇列頭

void* linkqueue_header(linkqueue* queue)

return tem->item;

}//獲取佇列長隊

int linkqueue_length(linkqueue* queue)

main.c檔案

#include "linkqueue.h"

int main()

for (i = 0;i < 5;i++)

printf("len:%d\n",linkqueue_length(queue));

printf("header:%d\n",*((int*)linkqueue_header(queue)));

while(linkqueue_length(queue) > 0)

printf("\n");

linkqueue_destroy(queue);

system("pause");

return 1;

}

輸出結果:

佇列鏈式儲存

ifndef status h define status h define false 1 define true 1 define ok 1 define error 0 typedef int elemtype typedef int status endif ifndef stack h d...

佇列的鏈式儲存

include include include typedef int elemtype typedef struct qnodequeuenode,queuenodeptr typedef struct qlistlistqueue,listqueueptr listqueueptr initqu...

佇列的鏈式儲存

include include 經典的佇列,使用鏈式儲存實現 佇列的基本特點就是一端是執行出列操作,一端是執行入列操作 typedef struct nodenode typedef structqueue void outqueue queuep myqueue void displayqueue...