1. 程式人生 > >棧與佇列--獲取棧頂/隊首資料(並出棧/隊)

棧與佇列--獲取棧頂/隊首資料(並出棧/隊)

陣列棧
完成ElemType Top(Stack S)函式,該函式把返回棧頂資料(不出棧),已知棧非空。
完成ElemType TopAndPop(Stack S)函式,該函式返回棧頂資料的同時把棧頂資料出棧,已知棧非空。

typedef int ElemType;
struct StackRecord;
typedef struct StackRecord *Stack;
struct StackRecord
{
    int Capacity; //棧容量
    int Top; //棧頂,初始為1
    ElemType *Array;
};

ElemType Top(Stack S)
{
    ElemType x;
    x=S‐>Array[S‐>Top];
    return
x; } ElemType TopAndPop(Stack S) { ElemType x; x=S‐>Array[S‐>Top]; S‐>Top‐‐; return x; }

鏈棧
完成ElemType Top(Stack S)函式,該函式返回鏈棧S的棧頂資料,已知S是帶頭結點的鏈棧並且S非空。
完成ElemType TopAndPop(Stack S)函式,該函式把返回鏈棧S棧頂資料並把棧頂資料出棧,已知S是帶頭結點的非空鏈棧。

typedef int ElemType;
struct Node;
typedef struct
Node * PtrToNode; typedef PtrToNode Stack; struct Node { ElemType data; PtrToNode next; }; ElemType Top(Stack S) { return S‐>next‐>data; } ElemType TopAndPop(Stack S) { ElemType x=S‐>next‐>data; Stack p=NULL; p=S‐>next; S‐>next=p‐>next; free(p); return
x; }

陣列佇列
完成ElemType Front(Queue Q)函式,該函式返回非空佇列Q的隊首資料(不出隊),其中Q是基於陣列的非迴圈佇列。
完成ElemType FrontAndDequeue(Queue Q)函式,該函式返回非空佇列Q的隊首資料並將隊首資料出隊,其中Q是基於陣列的非迴圈佇列。

typedef int ElemType;
struct QueueRecord;
typedef struct QueueRecord * Queue;
struct QueueRecord
{
    int Capacity; //佇列總容量
    int Front; //隊首 初始值為0
    int Rear; //隊尾,初始值為1
    int Size; //佇列中資料數,初始值為0
    ElemType *Array;
};

ElemType Front(Queue Q)
{
    return Q‐>Array[Q‐>Front];
}
ElemType FrontAndDequeue(Queue Q)
{
    Q‐>Front++;
    Q‐>Size‐‐;
    return Q‐>Array[Q‐>Front‐1];
}

鏈佇列
完成ElemType Front(Queue q)函式,該函式返回連結串列的佇列q的隊首資料(但不出棧),其中q是不帶頭節點的非空連結串列佇列。
完成ElemType FrontAndDequeue(Queue q)函式,該函式返回非空佇列q的隊首資料並將隊首資料出隊,其中q是不帶頭節點的連結串列佇列。

typedef int ElemType;
struct node;
typedef struct node Node;
struct queue;
typedef struct queue * Queue;
struct node
{
    ElemType data;
    Node * next;
};
struct queue
{
    Node * front; //隊首
    Node * rear; //隊尾
    int size; //佇列中資料數
};

ElemType Front(Queue q)
{
    return q‐>front‐>data;
}
ElemType FrontAndDequeue(Queue q)
{
    ElemType x;
    node *p=q‐>front;
    q‐>front=p‐>next;
    x=p‐>data;
    free(p);
    q‐>size‐‐;
    return x;
}

相關推薦

佇列--獲取/資料/

陣列棧 完成ElemType Top(Stack S)函式,該函式把返回棧頂資料(不出棧),已知棧非空。 完成ElemType TopAndPop(Stack S)函式,該函式返回棧頂資料的同時把棧

資料結構之佇列的面試題:判斷字串是否按照順序

可能這個題目猛一看,並不知道題目要求是什麼,讓我們做什麼。首先我們來說說這個題目大意。 給定一個字串,如:a b d e c 一個棧的入棧順序為:a b c d e 那麼出棧順序顯而易見:e d c b a 題目意思為:字串 a b d e c 是否能按

資料結構實驗之佇列三:字尾式求值SDUT 2133

題解:把每一步計算的答案再存在棧裡面,直到計算結束。           如果是運算元 那麼直接入棧;如果是運算子,那麼把棧裡面最頂部的兩個運算元拿出來進行運算,運算結果再放入到棧裡面,計算完所有的(#

資料結構實驗之佇列一:進位制轉換SDUT 2131

題目連結 題解: 特判一下n==0的時候。 #include <bits/stdc++.h> using namespace std; int a[1000]; int main() {

1.給新增一個獲取最小值的方法元素為Integer型,要求時間複雜度為O(1)

分析:在資料結構與演算法中,當要求時間複雜度最小時基本都是要犧牲空間複雜度。棧是先進後出,此處要求用棧實現一個獲取最小值的方法且時間複雜度為O(1),首先考慮的方向就是再借助一個棧來實現,這個棧主要用來儲存最小值序列(這個地方可以思考一下為什麼不能用一個變數來儲存最小值)。 下面直接附上程式碼:   

佇列的應用:停車場管理

設停車場是一個可停放n輛車的狹長通道,且只有一個大門可供汽車進出。在停車場內,汽車按到達的先後次序,由北向南依次排列(假設大門在最南端)。若車場內已停滿n輛車,則後來的汽車需在門外的便道上等候,當有車開走時,便道上的第一輛車即可開入。當停車場內某輛車要離開時,在它之後進入的車輛必須先退出車場為它讓路,待該輛車

第三章 佇列 練習題 10:括號畫家

10:括號畫家 總時間限制:  1000ms   記憶體限制:  262144kB 描述 Candela是一名漫畫家,她有一個奇特的愛好,就是在紙上畫括號。這一天,剛剛起床的Candela畫了一排括號序列,其中包含小括號()、中括號[]和

資料結構實驗之佇列二:一般算術表示式轉換成字尾式SDUT 2132

題目連結 #include <bits/stdc++.h> using namespace std; typedef long long ll; int ok(char ch, char sh) { if(sh == '(')return 1; if((ch ==

資料結構實驗之佇列六:下一較大值SDUT 3333

#include <bits/stdc++.h> using namespace std; int a[1000006]; int b[1000006]; int sta[100006]; int main() { int t,n,i,j,top; while(~sc

資料結構實驗之佇列五:下一較大值SDUT 3332

#include <bits/stdc++.h> using namespace std; int a[1005]; int main() { int t,n,i,j; while(~scanf("%d",&t)) { while(t-

資料結構實驗之佇列四:括號匹配SDUT 2134

#include <bits/stdc++.h> using namespace std; typedef long long ll; char s[100]; char a[100]; int main() { int i,j,k,f,top,len; while(

實驗二:佇列的實現應用

1、順序棧: #include <iostream> using namespace std; const int StackSize=10; class SeqStack{ public: SeqStack(); //建構函式,初始化一個空棧 ~SeqStack(){

佇列鏈式儲存結構一貨物上架問題

#include <iostream> #include<string.h> static int n;                       //用於輸入

資料結構實驗之佇列五:下一較大值

資料結構實驗之棧與佇列五:下一較大值(一) Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 對於包含n(1<=n<=1000)個整數的序列,對於序列中的每一元素,

資料結構-佇列

棧的定義 棧是限定僅在表尾進行插入和刪除操作的線性表 我們把允許插入和刪除的一端稱為棧頂 (top) ,另一端稱為棧底 (bottom) ,不含任何資料元素的棧稱為空棧。 棧又稱為後進先出 (Last In Filrst Out) 的線性表,簡稱LIFO結構。 理解棧的定義需要注意:

Python資料結構之: 佇列

棧(stacks) 是一種只能通過訪問其一端來實現資料儲存與檢索的線性資料結構,具有後進先出(last in first out,LIFO)的特徵 stack = [] stack.append("A") #A入棧 stack.append("B") #B入棧 st

資料結構實驗之佇列五:下一較大值一,二

資料結構實驗之棧與佇列五:下一較大值(一,二) Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 對於包含n(1<=n<=1000)個整數的序列,對於序

[佇列] 3.28 佇列 - 帶頭結點的迴圈鏈

題目來源:嚴蔚敏《資料結構》C語言版本習題冊 3.28 #include<stdio.h> #include<stdlib.h> #ifndef BASE #define BASE #define TRUE 1 #define FALSE 0

資料結構-線性表佇列基本概念

棧(stack,zhan):是限定僅在表尾進行插入和刪除操作的線性表。 把允許插入和刪除的一端稱為棧頂(top),另一端稱為棧底(bottom),不含任何資料元素的棧稱為空棧。棧又稱為後進先出(Last In First Out)的線性表,簡稱LIFO結構。 棧是一個線性表,棧元素

資料結構筆記-佇列python實現

概述 棧與佇列是程式設計中被廣泛應用的兩種重要的資料結構,都是在特定範圍的儲存單元記憶體儲資料,這些資料都可以被重新取出使用,與線性表相比,他們的插入和刪除受到更多的約束,固又稱限定性的線性表結構。他們是最簡單的快取結構,他們只支援資料項的儲存與訪問,不支援資料項之間的任何關係。因此,這兩種