佇列的定義:
佇列是一種特殊的線性表
隊頭(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 功能 從順序棧中出棧...