《資料結構和演算法 鍊錶實現佇列》

2021-10-13 05:36:22 字數 2673 閱讀 8621

寫出先入先出佇列的結構體queue定義,並實現以下函式:(15分)

1,queue *create(int size):建立乙個能放size個int型別的佇列,返回佇列的指標。

2,int put(queue *queue, int value):將value入隊,返回0表示成功,-1表示出錯。

3,int get(queue *queue, int *pvalue):將資料出隊並存入pvalue,返回0表示成功,-1表示出錯。

typedef struct node_t

nodelist;

typedef struct queue_t

queue;

queue *create(int size)

memset(queue,0,sizeof(queue));

node = (nodelist *)malloc(sizeof(nodelist));

if(null == node)

memset(node,0,sizeof(nodelist));

queue->head = node;

queue->end = node;

for(i=1;idata = i;

queue->end->next = node;

queue->end = node;

}queue->qsize = size;

return queue;

}

int put(queue *queue, int value)

memset(node,0,sizeof(nodelist));

node->data = value;

queue->qsize++;

if(null == queue->head)

else

return 0;

}

int get(queue *queue, int *pvalue)

*pvalue = queue->head->data;

node = queue->head->next;

free(queue->head);

queue->head = node;

queue->qsize--;

return 0;

}

測試:

#include#include#includetypedef struct node_t

nodelist;

typedef struct queue_t

queue;

queue *create(int size)

memset(queue,0,sizeof(queue));

node = (nodelist *)malloc(sizeof(nodelist));

if(null == node)

memset(node,0,sizeof(nodelist));

queue->head = node;

queue->end = node;

for(i=1;idata = i;

queue->end->next = node;

queue->end = node;

}queue->qsize = size;

return queue;

}int put(queue *queue, int value)

memset(node,0,sizeof(nodelist));

node->data = value;

queue->qsize++;

if(null == queue->head)

else

return 0;

}int get(queue *queue, int *pvalue)

*pvalue = queue->head->data;

node = queue->head->next;

free(queue->head);

queue->head = node;

queue->qsize--;

return 0;

}int getqueuesize(queue *queue)

int test_queue(void)

printf("size : %d \n",getqueuesize(queue)); // 0

put(queue,10);

printf("size : %d \n",getqueuesize(queue)); //1

put(queue,11);

printf("size : %d \n",getqueuesize(queue)); //2

get(queue,&data);

printf("data : %d \n",data); //10

get(queue,&data);

printf("data : %d \n",data); //11

printf("size : %d \n",getqueuesize(queue)); //0

}int main(void)

資料結構 佇列,陣列實現 鍊錶實現和迴圈佇列

一 什麼是佇列 一種先進先出的資料結構 fifo結構 新元素新增在隊尾 push 刪除操作刪掉第乙個元素 pop 二 佇列的實現方式 佇列的實現方式陣列實現 鍊錶實現 三 常見的佇列 常用佇列迴圈佇列 阻塞佇列 併發佇列 四 怎麼實現乙個無bug的佇列思考 思考1 head 頭元素 和tail 尾元...

鍊錶實現佇列 資料結構作業

仿照作業code1的功能,將課本上鍊表的實現佇列能完整實現 需要通過main函式呼叫並能進行友好的人機互動輸入 作業code1 鍊錶實現佇列的 include define ok 1 define error 0 using namespace std typedef int qelemtype t...

C資料結構 佇列 鍊錶實現

佇列 queue 是具有兩個特殊屬性的鍊錶。第一,新項只能新增到鍊錶的末尾 第二,只能從鍊錶的開頭移除項。可以把佇列想象成排隊買票的人,你從隊尾加入佇列,買完票後從隊首離開。佇列是一種 先進先出 first in first out,fifo 的資料形式。queue.h ifndef queue h...