C語言實現,順序佇列,迴圈佇列,和棧!

2021-08-08 21:23:23 字數 2373 閱讀 9252

佇列是一種特殊的

線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為入隊,從佇列中刪除乙個佇列元素稱為出隊。因為佇列只允許在一端插入,在另一端刪除,所以只有最早進入佇列的元素才能最先從佇列中刪除,故佇列又稱為先進先出(fifo—first in first out)

線性表。

順序佇列**實現:

#include #define max 10

typedef struct queue

queue;

queue a;

void iniqueue() //初始化

int isempty()

else

}int push_queue(int data) //入隊

else

a.front++;

return 0;

}int pop_queue() //出隊

return 0;

}void show() //遍歷

}int main(void)

迴圈佇列

在實際使用佇列時,為了使佇列空間能重複使用,往往對佇列的使用方法稍加改進:無論插入或刪除,一旦rear指標增1或front指標增1 時超出了所分配的佇列空間,就讓它指向這片連續空間的起始位置。自己真從maxsize-1增1變到0,可用取餘運算rear%maxsize和front%maxsize來實現。這實際上是把佇列空間想象成乙個環形空間,環形空間中的儲存單元迴圈使用,用這種方法管理的佇列也就稱為迴圈佇列。除了一些簡單應用之外,真正實用的佇列是迴圈佇列。

在迴圈佇列中,當隊列為空時,有front=rear,而當所有佇列空間全佔滿時,也有front=rear。為了區別這兩種情況,規定迴圈佇列最多只能有maxsize-1個佇列元素,當迴圈佇列中只剩下乙個空儲存單元時,佇列就已經滿了。因此,佇列判空的條件時front=rear,而佇列判滿的條件時front=(rear+1)%maxsize。

#include #define max 1000

typedef struct queues

queue;

queue queue;

void creatqueue()

void push_back(int vaule) //入隊

else

}int pop_queue() //出隊

return 0;

}int main()

printf("**********====\n");

for(i = 1;i <= 5;i++)

return 0;

}

作為一種資料結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照先進後出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後乙個資料被第乙個讀出來)。棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指標。

棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數為零時稱為空棧。插入一般稱為進棧(push),刪除則稱為退棧(pop)。棧也稱為後進先出表。

#include #include typedef struct node     //節點

node,*pnode;

typedef struct stack

stack,*pstack;

void initstack(pstack ps) //初始化棧

else

}int push_stack(pstack ps,int data) //壓棧

else

}void showstack(pstack ps) //遍歷棧

}int empty(pstack ps) //判斷棧是否為空

else

}int pop_stack(pstack ps) //出棧

else

}void clear(pstack ps) //清空棧

}int main()

else

}showstack(&s);

return 0;

}

編譯環境:qt5.3.2

C語言實現棧和佇列

標頭檔案 stack.h pragma once include include include typedef int stdatatype typedef struct stack stack 初始化棧 void stackinit stack pst 入棧 void stackpush sta...

mysql迴圈佇列 C語言實現 迴圈佇列

include include include typedef struct queue int pbase 陣列 int front 頭 int rear 尾 rear不存放資料,所以rear前面的是最後乙個資料 queue void init queue queue pq bool full q...

佇列的順序儲存結構(迴圈佇列)(C語言實現)

1 include 2 include 3 4 define ok 1 5 define err 2 6 define true 1 7 define false 0 8 define maxsize 4 定義佇列的最大長度 910 typedef int status 定義函式返回的狀態,ok e...