1. 程式人生 > >靜態陣列的順序棧C語言實現

靜態陣列的順序棧C語言實現

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define MAX_STACK_SIZE 100 //棧的大小
#define ERROR -1
#define OK 1
typedef struct sqstack
{
    int stack_array[MAX_STACK_SIZE];
    int top;
    int bottom;
}SqStack;
///棧的初始化
int Init_Stack(SqStack *S)
{
    S->bottom=S->top=0;
}
///進棧
int PushStack(SqStack *S, int e)
{
    //使資料元素e進棧成為新的棧頂元素
    if(S->top==MAX_STACK_SIZE-1)
    {
        printf("棧滿,返回錯誤標誌");
        return ERROR;
    }
    S->top=S->top+1;
    S->stack_array[S->top]=e;
    return OK;
}
///出棧
int PopStack(SqStack *S, int e)
{
    if(S->top==0)
    {
        printf("棧空,無法出棧元素");
        return ERROR;
    }
    e=S->stack_array[S->top];
    S->top--;
    return OK;
}
///遍歷棧
int StackTravel(SqStack *S)
{
    int e;
    int ptr;
    ptr=S->top;
    while(ptr>S->bottom)
    {
        e=S->stack_array[ptr];
        ptr=ptr-1;
        printf("%d\n",e);
    }
    return OK;
}
///取出棧頂元素
int GetTopStack(SqStack *S, int e)
{
    if(S->top==0)
    {
        printf("棧不存在或者棧為空\n");
        return ERROR;
    }
    else
    {
        e=S->stack_array[S->top];
        printf("棧頂元素為:%d\n",e);
    }
}
///清空棧
int destroyStack(SqStack *S)
{
    if(S->top!=S->bottom)
    {
        S->top=0;
    }
}
int main()
{
    SqStack stack2;
    int m,x,n;
    Init_Stack(&stack2);
    printf("輸出初始化後的棧的棧頂元素:\n");
    GetTopStack(&stack2,n);
    for(x=1;x<5;x++)
    {
       PushStack(&stack2,x);
    }
    printf("壓入了4個元素後,輸出棧中元素:\n");
    StackTravel(&stack2);
    printf("輸出棧的棧頂元素:\n");
    GetTopStack(&stack2,n);
    destroyStack(&stack2);

}


相關推薦

靜態陣列順序C語言實現

#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define MAX_STACK_SIZE 100 //棧的大小#define ERROR -1#define OK 1typ

資料結構中順序c語言程式碼實現

一.sqstack.h標頭檔案的程式碼 #ifndef __SQSTACK_H__ #define __SQSTACK_H__ #include<stdio.h> #include<stdlib.h> typedef int datatype; ty

鏈式-C語言實現

amp ron truct include 數據 類型 nod lse ext 相對於順序棧的空間有限,鏈式棧的操作則更加靈活 #include<stdio.h> #include<malloc.h> typedef int SElemType

資料結構線性表順序結構c語言實現程式碼

#include<stdio.h> #include<stdlib.h> typedef int ElementType; typedef struct LNode * PtrToLNode; struct LNode{ ElementType D

資料結構與演算法之順序C語言實現

順序表等相關概念請自行查閱資料,這裡主要是實現。 注: 1.順序表C語言實現; 2.按較簡單的方式實現,主要幫助理解,可在此基礎上修改,更加完善; 3.提供幾個簡單函式,可自行新增功能; 4.可用C++封裝,得知STL中vector原理。    順序表容量。 #def

迴圈佇列-順序儲存-c語言實現

/* 迴圈佇列-線性表-順序結構 */ #include<stdio.h> #define OK 1; #define ERROR 0; #define MAXSIZE 20 typedef int QElemType; typedef

靜態連結串列及C語言實現

邏輯結構上相鄰的資料元素,儲存在指定的一塊記憶體空間中,資料元素只允許在這塊記憶體空間中隨機存放,這樣的儲存結構生成的連結串列稱為靜態連結串列。 靜態連結串列和動態連結串列的區別:靜態連結串列限制了資料元素存放的位置範圍;動態連結串列是整個記憶體空間。 圖1 靜態連結

資料結構C語言實現

根據《大話資料結構》整理 #include <stdio.h> #define MAXSIZE 20 #define OK 1 #define ERROR 0 #define TR

靜態陣列實現順序表(C語言實現

在寫順序表之前我們先來了解下相關的一些知識,以便我們後期能夠寫出更好的東西。資料結構是相互之間存在一種或多種特定關係的資料元素的集合。根據資料元素之間關係的不同特性,通常有如下種基本結構:集合:結構中的元素之間除了“同屬於一個集合”的關係外,別無其他的關係。如:廣義表。線性結

順序c語言實現和OOP實現

目錄 C語言實現順序棧和OOP實現順序棧 1,順序棧 2,C語言實現順序棧 3,用OOP實現一個順序棧 C語言實現順序棧和OOP實現順序棧 1,順序棧 (1)定義:棧(stack)又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除

C語言實現靜態順序

實現順序表分為以下幾步: 1.先寫出封裝順序表結構的結構體; 2.初始化順序表; 3.增刪查改; 4.順序表的逆置等。 #define MAX_SIZE 100 typedef int DataType; typedef struct SeqList { DataType d

【資料結構】順序儲存結構 C語言實現

棧(stack),是一種線性儲存結構,它有以下幾個特點: 棧中資料是按照"後進先出(LIFO, Last In First Out)"方式進出棧的。 向棧中新增/刪除資料時,只能從棧頂進行操作。 基本操作 initStack(&S) destroySt

順序的基本操作(入和出)及C語言實現詳解

棧,可以理解為遵循“後入先出”原則的線性表,因此棧結構可以採用順序表或連結串列實現。 順序棧的實現採用的是順序表,也就是陣列。 順序棧的實現思想是:在陣列中設定一個隨時指向棧頂元素的變數(一般命名為 top ),當 top 的值為 -1 時,說明陣列中沒有資料,即棧中沒有資料元素,為“空棧”;只要資料元素

C語言實現順序的初始化&進&出&讀取頂元素

/*順序表實現棧的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define Stack_Size 50 //設棧中元素個數為50 #define OK 1 #define ERROR 0

C語言實現陣列

陣列實現棧 #include <stdio.h> #include <stdlib.h> #define MAXSIZE 1000 #define element_type

C語言實現(基於陣列)

棧是一種操作受限的資料結構,只允許從一段操作,而且先進後出(FILO  first in last out)這裡將棧的操作封裝在C語言的標頭檔案裡 實現棧的程式碼如下 #include<stdbool.h> #define maxsize 10 typed

C語言實現順序的括號匹配

//順序棧的使用舉例:括號的匹配 #include <stdio.h> #include <stdlib.h> #define OK      1 #define ERROR   0 #define TRUE    1 #define FALSE  

c語言實現順序的基本功能

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

C語言實現順序的基本操作

//標頭檔案內容//--------------------棧的順序儲存結構-------------------- #define STACK_INIT_SIZE 100 #define STACKINCREACE 10 typedef int Elemtype;//在

C語言實現反轉陣列】(用實現)51nod

題幹: 輸入一個長度為n(1 <= n <= 100000)陣列,倒序輸出他。 陣列中的元素ai滿足(1 <= ai <= 100000)。 Input 第一行一個整數n