國嵌資料結構學習之佇列

2021-08-20 15:00:39 字數 3540 閱讀 3426

佇列的定義:

佇列是一種特殊的線性表

隊頭(front):取出資料元素的一端

隊尾(rear):插入資料元素的一端

注意:佇列不予許在中間部位進行操作

應用:銀行的取號排隊

佇列的性質:

佇列的一些常用操作:

建立佇列

銷毀佇列

清空佇列

進佇列出佇列

獲取對頭元素

獲取佇列的長度

佇列的順序儲存實現:

實現**:

定義的標頭檔案:

#ifndef _seqqueue_h_

#define _seqqueue_h_

#include "seqlist.h"

typedef void seqqueue;

seqqueue *seqqueue_create(int capacity);

void seqqueue_destroy(seqqueue * queue);

void seqqueue_clear(seqqueue *queue);

void *seqqueue_retrieve(seqqueue *queue);

void *seqqueue_header(seqqueue *queue);

int seqqueue_length(seqqueue *queue);

int seqqueue_capacity(seqqueue *queue);

#endif

實現的c檔案:

#include "seqqueue.h"

//建立乙個佇列

seqqueue *seqqueue_create(int capacity)

//銷毀乙個佇列

void seqqueue_destroy(seqqueue *queue)

//清空乙個佇列

void seqqueue_clear(seqqueue *queue)

//往佇列中插入元素(尾部)

//彈出佇列的元素(頭部)

void *seqqueue_retrieve(seqqueue *queue)

//得到佇列的頭部元素

void *seqqueue_header(seqqueue *queue)

//得到佇列的長度

int seqqueue_length(seqqueue *queue)

//得到佇列的容量

int seqqueue_capacity(seqqueue *queue)

測試**:

#include #include #include "seqqueue.h"

int main(int argc, char *argv)

; int i = 0;

int x = 0;

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

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

printf("length: %d\n", seqqueue_length(queue));

printf("capacity: %d\n", seqqueue_capacity(queue));

while( seqqueue_length(queue) > 0 )

seqqueue_destroy(queue);

getchar();

return 0;

}

棧的鏈式儲存實現;

棧的鏈式儲存結構:

定義的標頭檔案:

#ifndef _linkqueue_h_

#define _linkqueue_h_

#include "linklist.h"

#include typedef void linkqueue;

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);

#endif

實現的c檔案:

#include "linkqueue.h"

typedef struct _tag_linkqueuenode linkqueuenode;

struct _tag_linkqueuenode

;//建立佇列的頭節點

linkqueue *linkqueue_create()

//銷毀乙個佇列

void linkqueue_destroy(linkqueue *queue)

//清空乙個佇列

void linkqueue_clear(linkqueue *queue)

}//進入佇列

else

return ret;

} //出佇列

void* linkqueue_retrieve(linkqueue* queue)

return ret;

} //得到佇列頭部元素

void* linkqueue_header(linkqueue* queue)

return ret;

} //得到佇列長度

int linkqueue_length(linkqueue* queue)

測試**:

#include #include #include "linkqueue.h"

int main(int argc, char *argv)

; int i = 0;

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

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

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

while( linkqueue_length(queue) > 0 )

linkqueue_destroy(queue);

getchar();

return 0;

}

國嵌資料結構學習之棧的鏈式實現

棧的鏈式結構是用以前實現的可復用的單鏈表實現的,和棧的順序結構區別僅僅在儲存結構方面 實現 定義的標頭檔案 ifndef linkstack h define linkstack h typedef void linkstack typedef struct tag linkstacknode li...

資料結構學習 佇列

定義 佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出的 first in first out 的線性表,簡稱fifo。允許插入的一端為隊尾,允許刪除的一端為隊頭。佇列不允許在中間部位進行操作!假設佇列是q a1,a2,an 那麼a1就是隊頭元素,而a...

資料結構學習之棧 佇列等

gdb除錯段錯誤 1.ulimit c unlimited 2.ulimit c 1000 3.gcc 檔案 g 4.執行程式 a.out 生成core檔案 5.gdb a.out core 順序棧1.出棧 datatype popseqstack seqstack stack 功能 從順序棧中出棧...