#資料結構學習之佇列(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 功能 從順序棧中出棧...