基於順序表實現佇列

2021-08-18 13:10:51 字數 2175 閱讀 3810

佇列是一種先進先出(fifo)的特殊線性表。它只允許在表的一端進行插入,而在另一端刪除元素。

在佇列中,允許插入的一端叫做隊尾,允許刪除的一端則稱為隊頭。

佇列的基本操作也有三種,分別為:入佇列、出佇列、取隊首元素。

seqqueue.h:#pragma once

#include#include#includetypedef char seqqueuetype;

typedef struct seqqueueseqqueue;

void seqqueueinit(seqqueue* s);

void seqqueuepush(seqqueue* s,seqqueuetype value);

void seqqueuepop(seqqueue* s);

int seqqueuefront(seqqueue* s,seqqueuetype* value);

void seqqueuedestroy(seqqueue* s);

void seqqueueprint(seqqueue* s,const char* msg);

void seqqueueresize(seqqueue* s);

seqqueue.c:#include "seqqueue.h"

void seqqueueinit(seqqueue* s)

s->head = 0;

s->tail = 0;

s->size = 0;

s->capacity = 1024;

s->data = (seqqueuetype*)malloc(s->capacity * sizeof(seqqueuetype));

return;

}void seqqueuedestroy(seqqueue* s)

s->head = 0;

s->tail = 0;

s->size = 0;

s->capacity = 0;

free(s->data);

return;

}void seqqueueprint(seqqueue* s,const char* msg)

printf("\n");

}void seqqueuepush(seqqueue* s,seqqueuetype value)

if(s->size > s->capacity)

s->data[s->tail++] = value;

if(s->tail >= s->capacity)

++s->size;

}void seqqueueresize(seqqueue* s)

if(s->size < s->capacity)

seqqueuetype* new_ptr = (seqqueuetype*)malloc(s->capacity * sizeof(seqqueuetype)*2+1);

size_t i = 0;

for(;i < s->size;i++)

free(s->data);

s->data = new_ptr;

}void seqqueuepop(seqqueue* s)

if(s->size == 0)

++s->head;

if(s->head >= s->capacity)

--s->size;

return;

}int seqqueuefront(seqqueue* s,seqqueuetype* value)

if(s->size == 0)

*value = s->data[s->head];

return 1;

}

test.c:#include "seqqueue.h"

#define print_head printf("\n**********==%s**********==\n",__function__)

void test()

int main()

結果演示:

順序表實現佇列

一.佇列相關概念 佇列是只允許在一段進行插入元素,在另一端進行刪除元素的線性表,即只允許對佇列進行尾插,頭刪的操作.佇列具有先進先出,後進後出的特性.1.初始化 2.列印佇列資訊 void testprintchar seqque q,char msg int i q head for i q ta...

佇列及順序表實現佇列

1.佇列是一種特殊的線性表,是只允許表的一端進行插入操作,而表的另一端進行刪除操作的線性表。進行插入操作的一端是表尾 rear 進行刪除操作的一端是表頭 front 當佇列中沒有資料元素時,稱為空佇列。2.佇列的特點 先進先出 1.什麼是順序佇列 用一片連續的儲存空間來儲存佇列中的資料元素,這樣的佇...

單鏈表實現佇列 順序表實現佇列

一 sysutil.h 系統標頭檔案 include include include include include include include 記憶體洩漏工具的標頭檔案二 單鏈表實現佇列函式 include sysutil.h define queueelemtype int 鏈佇列typed...