1. 程式人生 > >採用順序儲存實現迴圈佇列的初始化、入隊、出隊操作。

採用順序儲存實現迴圈佇列的初始化、入隊、出隊操作。


//////////////////////下面為迴圈佇列
#include<stdio.h>
#include<stdlib.h>
#define OVERFLOW -2

#define MAXQSIZE 100  /*佇列的最大長度*/
typedef struct {
    int *base;   // 佇列的元素空間頭指標指示器
    int  front;                 
    int  rear;   /*尾指標指示器*/
}SqQueue;       

int InitQueue(SqQueue &Q) {//初始化操作
 Q.base = (int * )malloc(MAXQSIZE*sizeof(int));
 if (!Q. base) exit (OVERFLOW); 
 Q.front=Q.rear =0;
 return 1;
}

int EnQueue(SqQueue &Q) {//入隊操作
 int e;
 if ((Q. rear+ 1) % MAXQSIZE == Q. front)
 {
  printf("佇列已滿,不能進隊\n");
  return -1;//滿標誌
 }
 printf("請輸入進隊元素:");
 scanf("%d",&e);
 Q.base[Q.rear] = e;//進隊
 Q.rear = (Q. rear + 1) % MAXQSIZE;//隊尾指標後移
 return 1;
}

int DeQueue (SqQueue &Q) {//出隊操作
 int e;
 if (Q. front == Q. rear) {
  printf("佇列已經為空\n");
  return -1;
 }
 e = Q. base[Q. front];//隊頭出隊
 printf("%d  出隊\n",e);
 Q.front = (Q.front + 1) % MAXQSIZE;//隊頭下標後移
 return 1;
}
 
void tip()

 printf("*************\n");
 printf("*輸入1 進隊 *\n");
 printf("*輸入2 出對 *\n");
 printf("*輸入0 退出 *\n");
 printf("*請選擇:    *\n");
 printf("*************\n");
}


int main()
{
 int k;
 SqQueue Q;
 InitQueue(Q);//初始化
 tip();
 while(scanf("%d",&k),k)
 {
  switch(k)
  {
  case 1:
   EnQueue(Q);
   tip();
   printf("操作完畢\n");
   break;
  case 2:
   DeQueue(Q);
   tip();
   printf("操作完畢\n");
   break;
  }
 }
 
 return 0;
}
////////////

相關推薦

採用順序儲存實現迴圈佇列初始入隊操作

//////////////////////下面為迴圈佇列 #include<stdio.h> #include<stdlib.h> #define OVERFLOW -2 #define MAXQSIZE 100  /*佇列的最大長度*/ ty

採用順序儲存實現棧的初始入棧操作/驗證實驗/

#include<stdio.h>  #include<stdlib.h>  #define maxsize 100  typedef struct SqStack{      int data[maxsize];      int top;  }Sq

佇列順序儲存實現迴圈佇列

佇列(queue)是一種只允許在一端插入元素,而在另一端刪除元素的線性表。它是一種先進先出(First In First Out,FIFO)的線性表。我們把允許插入的一端稱為隊尾,允許刪除元素

《資料結構》嚴蔚敏 順序儲存實現迴圈佇列 演算法3_4_3

我第一次實現的時候竟然是用連結串列實現的。。。哎,這種zz的事,就莫再提了,轉載文章:https://blog.csdn.net/Vit_rose/article/details/52781124 其實和前面順序棧差不多,但是就是在判斷指標的下一個位置的時候 q->rear = (

C語言 ,單鏈表實現佇列初始入隊,元素個數,首元素,是否為空)

單鏈表實現佇列: 連結串列為空的判斷條件:pQueue->pFront==pQueue->pRear或者若結構體中存在數的個數時,判斷pQueue->size==0,即元素個數為0 標頭檔案:佇列.h #pragma once #include<

建立一個順序佇列實現佇列入隊操作

標頭檔案: #ifndef seqqueue_H #define seqqueue_H const int queuesize=10; class seqqueue { int rear,front; int data[queuesize]; public: seqqueue(){front

佇列初始入隊,計算的長度,遍歷鏈銷燬佇列

#include "stdio.h" #include "stdlib.h" typedef struct node{ int data; struct node *next; }*pnode; typedef struct queue{ pnode front; pno

資料結構學習之路4 佇列的基本操作順序儲存迴圈佇列+連結串列實現

佇列先進先出,這裡用了順序(陣列)和鏈式兩種方式實現,下次再用鏈式儲存實現以下堆疊試試 迴圈佇列: //順序儲存結構的迴圈佇列 #include<iostream> using namespace std; #define MAXSIZE 100 typedef

資料結構---順序儲存迴圈佇列

佇列的定義 佇列是隻允許在一端進行插入操作,在另一端進行刪除操作的線性表,允許插入(也稱入隊,進隊)的一端叫隊尾,允許刪除(也叫出隊)的一端叫做對頭,佇列具有先進先出的特點。 在順序佇列中,隨著佇列的插入刪除操作,整個佇列向陣列中下標較大的位置移動,從而產生佇列

佇列——順序儲存迴圈佇列儲存元素為自定義型別)

相比儲存預設型別的迴圈佇列,首先我們需要自定義儲存的類。 自定義顧客類(Customer.h) #pragma once #include<string> using names

C語言實現迴圈佇列初始&進&&讀取頭元素&判空-2

/*順序表實現佇列的一系列操作(設定flag標誌不損失陣列空間)*/ #include<stdio.h> #include<stdlib.h> #define Queue_Size 50 //佇列的最大長度 #define OK 1 #define ER

C語言實現迴圈佇列初始&進&&讀取頭元素&判空-1

目前,處在學習資料結構+ing,由於之前學過了佇列,今天就把自己寫過的程式碼做了一些完善分享給大家,希望能夠幫助到有需要的朋友,有不足的地方歡迎大家交流    φ(゜▽゜*)♪ 佇列是另一種限定性的線性表,它只允許在表的一端插入元素,而在另一端刪除元素,所以佇列

C語言實現順序佇列初始入隊操作(三)

佇列是一種只能在隊頭刪除、隊尾插入的線性表,本文實現佇列的順序結構,使用一個結構體包含隊頭指標、隊尾指標、佇列的長度這三個成員。通過malloc函式為佇列開闢一片記憶體,大小為100個單位(100*資料型別所佔位元組),將隊頭指標指向起始地址,隊尾指標也指向起始地址。佇列的

迴圈佇列順序儲存實現入隊,清,銷燬,遍歷等)

迴圈佇列的順序儲存實現,包括入隊,出隊,清隊,銷燬隊,遍歷佇列等 佇列(queue)是一種先進先出(first in fist out,縮寫為FIFO)的線性表,它只允許在表的一端進行插入,而在另一端進行刪除元素。允許插入的一端稱為隊尾(rear),允許刪除的一

順序表的建立和初始過程詳解(C語言實現

順序表存放資料的特點和陣列這種資料型別完全吻合,因此順序表的實現使用的是陣列。需要注意的是,使用陣列實現順序表時,一定要預先申請足夠大的記憶體空間,避免因儲存空間不足,造成資料溢位,導致不必要的程式錯誤甚至崩潰。 在建立順序表時,除了預先申請記憶體空間,還需要實時記錄順序表的長度和順序表本身申請的記憶體大

帶頭結點的迴圈連結串列表示佇列, 並且只設一個指標指向隊尾元素結點, 試編寫相應的佇列初始,入佇列佇列的演算法

資料結構演算法題(假設以帶頭結點的迴圈連結串列表示佇列, 並且只設一個指標指向隊尾元素結點(注意不設頭指標) 試編寫相應的佇列初始化,入佇列和出佇列的演算法!) /* 資料結構演算法題

《資料結構》嚴蔚敏 順序儲存實現佇列 演算法3_4_1

這個的實現和前面的棧大同小異,就不多敘述了 // queue //除了這種還有雙端佇列 #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define INIT_SIZ

c++ 實現順序棧類(初始,入棧,退棧讀棧頂元素以及順序輸出棧頂指標與棧中的元素

/* 定義順序棧類(初始化,入棧,退棧。讀棧頂元素以及順序輸出棧頂指標與棧中的元素 */ #include<iostream> using namespace std; // template <class T> class sq_Stack {

已知長度為n的線性表A採用順序儲存結構,請寫一個時間複雜度為O(n)空間複雜度為O(1)的演算法,該演算法可刪除線性表中所有值為item的資料元素

語言:C++ #include <iostream> using namespace std; typedef int ElemType; //定義 #define MAXSIZE 100 typedef struct {ElemType *elem; int length;}Sq

將一個順序實現迴圈左移n個位置後的效果

#include <stdio.h> /* 題目:天勤41頁綜合應用題2 將存放n個整數的順序表迴圈左移P個位置,實現 (X0,X1,...,Xn-1) (Xp,Xp+1,...,Xn-1,X0,X1...,Xp-1) 演算法: 實際的操作並不是對順序表真的進行迴圈左移,而是通過逆序操