資料結構學習之佇列 C語言

2021-09-20 13:17:34 字數 2880 閱讀 6877

#資料結構學習之佇列(c語言)

佇列( queue)也是存放資料物件的一種容器,其中的資料物件也按線性的邏輯次序排列。佇列結構同樣支援物件的插入和刪除,但兩種操作的範圍分別被限制於佇列的兩端,若約定新物件只能從某一端插入其中,則只能從另一端刪除已有的元素。允許取出元素的一端稱作隊頭( front),而允許插入元素的另一端稱作隊尾( rear)。佇列中各物件的操作次序遵循所謂先進先(first-in-first-out, fifo)的規律:更早(晚)出隊的元素應為更早(晚)入隊者,反之,更早(晚)入隊者應更早(晚)出隊。

在乙個佇列結構中,有三個元素,分別是頭指標,尾指標以及表示佇列中當前成員個數的引數

typedef struct

queue;

佇列中的成員採取鏈式儲存結構。

typedef struct qnode

qnodetype;

佇列設定有以下介面:

int initqueue(queue **q);           /*初始化佇列*/

int enqueue(queue* q, char x); /*進隊操作*/

int sizeofqueue(queue* q); /*佇列大小*/

int outqueue(queue* q,char x); /*出隊操作*/

void get(queue* q, char x); /*獲取成員*/

int delall(queue* q); /*刪除所有佇列成員*/

int delone(queue* q,int num); /*刪除指定成員(按序號)*/

int displayall(queue* q); /*顯示所有成員*/

int displayone(queue* q,int num); /*顯示乙個成員(按序號)*/

具體**如下:

queue.h

#pragma once

#include #include #include #define maxmessage 50 /*訊息最大長度*/

#define len 3 /*佇列最大長度*/

#define malloc_qnode (qnodetype*)malloc(sizeof(qnodetype))

/*成員結構*/

typedef struct qnode

qnodetype;

/*定義佇列*/

typedef struct

queue;

int initqueue(queue **q);

int enqueue(queue* q, char x);

int sizeofqueue(queue* q);

int outqueue(queue* q,char x);

void get(queue* q, char x);

int delall(queue* q);

int delone(queue* q,int num);

int displayall(queue* q);

int displayone(queue* q,int num);

queue.c

#include "queue.h"

/*初始化佇列*/

int initqueue(queue **q)

/*進隊操作*/

int enqueue(queue* q, char x)

node->next = null;

q->rear->next = node;

q->rear = node;

(q->num)++;

return 1;

}/*佇列大小*/

int sizeofqueue(queue* q)

/*出隊操作*/

int outqueue(queue* q,char x)

q->front->next = delnode->next;

if (q->rear == delnode) q->front = q->rear;

(q->num)--;

printf("\n\t\t\t\t\t\t\tmsg: %s is outqueue!\n\n", delnode->data);

free(delnode);

return 1;

}/*獲取成員*/

void get(queue* q, char x)

}/*刪除所有佇列成員*/

int delall(queue* q)

return 1;

}/*刪除指定成員(按序號)*/

int delone(queue* q,int num)

else}}

else return 0;

return 1;

}/*顯示所有成員*/

int displayall(queue* q)

while (i <= q->num)

return 1;

}/*顯示乙個成員(按序號)*/

int displayone(queue* q,int num)

while (i <= q->num)

else

i++;

}return 1;

}/*主函式*/

int main(void)

if (command == 'q' || command == 'q')

break;

}return 0;

}

資料結構學習 佇列

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

c語言資料結構學習

單向鍊錶中26個英文本母的錄入 void build p data z 最後乙個字母z單獨處理 p next null z為尾結點,無next,單獨處理指標域 以上為子函式部分,輸出部分如下 void display 問題 如果要求計數有多少個字元。回答 將輸出行改為用count計數。刪除 p 節點...

資料結構學習之棧 佇列等

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 功能 從順序棧中出棧...