国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

順序棧的初始化、構建、入棧,出棧和取棧頂元素

這篇具有很好參考價值的文章主要介紹了順序棧的初始化、構建、入棧,出棧和取棧頂元素。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、順序棧的定義:

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100//順序棧存儲空間的的初始分配量;
#define OVERFLOW -1
#define OK 1;
#define ERROR -1
#define MAX 100
typedef int Status;
typedef int SElemType;
typedef struct
{
	SElemType *base;//棧底指針;
	SElemType *top;//棧頂指針;
	int length;
	int stacksize;//棧可用最大容量;
}SqStack;

二、順序棧的初始化:

算法步驟:

①為順序棧分配一個最大容量為MAXSIZE的數(shù)組空間,使base指向這段空間的基地址(棧底);

②棧頂指針top初始為base,表示棧為空;

③stacksize置為棧的最大容量MAXSIZE;

Status InitStack(SqStack &S)
{//構建一個空棧
	S.base=(int*)malloc(MAXSIZE*sizeof(int));//為順序表動態(tài)分配一個最大容量為MAXSIZE的數(shù)組空間
	if(!S.base) exit(OVERFLOW);//存儲分配失敗
	S.top=S.base;//top初始為base,空棧
	S.stacksize=MAXSIZE;//stacksize置為棧的最大容量MAXSIZE
	return OK;
}

三、入棧:

算法步驟:

①判斷棧是否為滿,若滿則返回ERROR;

②將新元素壓入棧頂,棧頂指針+1;

Status Push(SqStack &S,SElemType e)
{//插入元素e為新的棧頂元素;
	if(S.top-S.base==S.stacksize)//棧滿;
		return ERROR;
	*S.top++=e;//將元素e壓入棧頂,棧頂指針加1;
	return OK;
}

四、出棧:

算法步驟:

①判斷棧是否空,若空則返回ERROR;

②棧頂指針減一,棧頂元素出棧;

Status Pop(SqStack &S)
{//從棧頂遍歷棧的值;
    int e;
	if(S.top==S.base)
		return ERROR;//棧空;
	e=*--S.top;//棧頂指針及減1,將棧頂元素賦給e;
	return e;//返回e; 
}

五、取棧頂元素:

算法步驟:

①判斷棧非空;

②返回棧頂值;文章來源地址http://www.zghlxwxcb.cn/news/detail-723131.html

SElemType GetTop(SqStack S)
{//返回S的棧頂元素,不修改棧頂指針;
	if(S.top!=S.base)//棧非空;
		return *(S.top-1);//返回棧頂元素的值,棧頂指針不變;
}

六、主函數(shù):

int main()
{
	SqStack S;
	InitStack(S);
	printf("請輸入順序棧長度:");
	int x;
	scanf("%d",&x); 
    printf("請輸入元素:");
	int e;
	for (int i = 1; i <= x; i++) {
        scanf("%d", &e);
        Push(S, e);//入棧 
    }
	for(int i=0;i<x;i++)
	{
		printf("%d ",Pop(S));//出棧
	}
	printf("\n");
	printf("---------\n");
	printf("棧頂元素為:");
	printf("%d",GetTop(S));//取棧頂元素;
	return 0;
}

七、完整代碼:

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100//順序棧存儲空間的的初始分配量;
#define OVERFLOW -1
#define OK 1;
#define ERROR -1
#define MAXSIZE 100
typedef int Status;
typedef int SElemType;
typedef struct
{
	SElemType *base;//棧底指針;
	SElemType *top;//棧頂指針;
	int length;
	int stacksize;//??捎米畲笕萘浚?}SqStack;
Status InitStack(SqStack &S)
{//構建一個空棧
	S.base=(int*)malloc(MAXSIZE*sizeof(int));//為順序表動態(tài)分配一個最大容量為MAXSIZE的數(shù)組空間
	if(!S.base) exit(OVERFLOW);//存儲分配失敗
	S.top=S.base;//top初始為base,空棧
	S.stacksize=MAXSIZE;//stacksize置為棧的最大容量MAXSIZE
	return OK;
}
Status Push(SqStack &S,SElemType e)
{//插入元素e為新的棧頂元素;
	if(S.top-S.base==S.stacksize)//棧滿;
		return ERROR;
	*S.top++=e;//將元素e壓入棧頂,棧頂指針加1;
	return OK;
}
Status Pop(SqStack &S)
{//從棧頂遍歷棧的值;
    int e;
	if(S.top==S.base)
		return ERROR;//棧空;
	e=*--S.top;//棧頂指針及減1,將棧頂元素賦給e;
	return e;//返回e; 
}
SElemType GetTop(SqStack S)
{//返回S的棧頂元素,不修改棧頂指針;
	if(S.top!=S.base)//棧非空;
		return *(S.top-1);//返回棧頂元素的值,棧頂指針不變;
}

int main()
{
	SqStack S;
	InitStack(S);
	printf("請輸入順序棧長度:");
	int x;
	scanf("%d",&x); 
    printf("請輸入元素:");
	int e;
	for (int i = 1; i <= x; i++) {
        scanf("%d", &e);
        Push(S, e);//入棧 
    }
	for(int i=0;i<x;i++)
	{
		printf("%d ",Pop(S));//出棧
	}
	printf("\n");
	printf("---------\n");
	printf("棧頂元素為:");
	printf("%d",GetTop(S));//取棧頂元素;
	return 0;
}

到了這里,關于順序棧的初始化、構建、入棧,出棧和取棧頂元素的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 順序棧的入棧與出棧-----(c語言)

    順序棧的入棧與出棧-----(c語言)

    棧:是限定僅在表尾進行插入和刪除操作的線性表(順序結構) 棧頂:允許插入跟刪除的一端 棧底:固定的一端,不允許在棧底進行插入跟刪除 入棧:棧的插入操作 出棧:棧的刪除操作 目錄 定義棧 創(chuàng)建空棧 ?入棧 ?出棧 ?源代碼 此處定義棧的最大值為10,當然如果需要后

    2024年02月08日
    瀏覽(18)
  • 【 第4關:入棧和出棧的基本操作】【編程題實訓-?!俊绢^歌】【bjfu-243】

    本關任務:輸入一個整數(shù)序列a1,a2,a3…,an。當ai不等于-1時將ai進棧;當ai=-1時,輸出棧頂元素并將其出棧。 輸入 多組數(shù)據(jù),每組數(shù)據(jù)有兩行,第一行為序列的長度n,第二行為n個整數(shù),整數(shù)之間用空格分隔。當n=0時輸入結束。 輸出 對于每一組數(shù)據(jù)輸出若干行。每行為相應的出

    2024年02月06日
    瀏覽(19)
  • 【數(shù)據(jù)結構】順序棧的基本操作:出棧、入棧、取棧頂元素、輸出所有棧中元素、括號匹配題目

    【數(shù)據(jù)結構】順序棧的基本操作:出棧、入棧、取棧頂元素、輸出所有棧中元素、括號匹配題目

    棧是限定僅在表位進行插入或刪除操作的線性表。棧的表尾稱為棧頂,表頭稱為棧底。不含元素的棧稱為空棧。 左圖為棧的示意圖,右圖為用鐵路調度表示棧。 如下是入棧至棧滿再進行出棧的過程示意圖。值得注意的是,棧滿后,top指針指向的不是頂端元素,而是頂端的下

    2024年02月07日
    瀏覽(26)
  • golang變量初始化順序

    順序: 1.引用的包 2.全局變量 3.init()函數(shù) 4.main()函數(shù) 輸出 $ go run 1.go pkg init func() main init main()

    2024年04月17日
    瀏覽(36)
  • Java之初始化順序實踐

    在創(chuàng)建Java對象時,需要將對象中的成員變量進行初始化后,才能調用對象的構造方法創(chuàng)建對象。本文中將會講解初始化時父類與子類對應的順序。 場景1:父類、子類的初始化順序 用例代碼 結果輸出 結果分析 先初始化靜態(tài)塊:父類的靜態(tài)塊 - 子類的靜態(tài)塊。 再初始化非靜

    2024年02月11日
    瀏覽(22)
  • 數(shù)據(jù)結構與算法——順序表(順序存儲結構)及初始化詳解

    數(shù)據(jù)結構與算法——順序表(順序存儲結構)及初始化詳解

    順序表 ,全名 順序存儲結構 ,是線性表的一種。通過《什么是線性表》一節(jié)的學習我們知道,線性表用于存儲邏輯關系為“一對一”的數(shù)據(jù),順序表自然也不例外。 不僅如此,順序表對數(shù)據(jù)的物理存儲結構也有要求。 順序表存儲數(shù)據(jù)時,會提前申請一整塊足夠大小的物理

    2024年02月16日
    瀏覽(31)
  • go語言包、變量、init初始化順序

    go語言包、變量、init初始化順序

    一個完整的 go 語言可運行程序,通常會包含引用的包、變量、init 函數(shù)以及 main 函數(shù)幾個部分。 包、變量、常量、init 函數(shù)以及 main 函數(shù)初始化順序如下圖所示: 在一個 go 語言程序中,初始化順序規(guī)則如下: 引入的包 當前包中的變量、常量 當前包的 init 函數(shù) main 函數(shù) 初始

    2023年04月14日
    瀏覽(26)
  • Spring初始化順序- RabbitMq 無法自動創(chuàng)建隊列

    Spring初始化順序- RabbitMq 無法自動創(chuàng)建隊列

    項目中使用了RabbitMq, 并配置了自動創(chuàng)建topic, exchange,binding 等,但是通過測試發(fā)現(xiàn),有一個隊列始終無法自動創(chuàng)建,在對spring 源碼以及rabbitmq 源碼debug 后發(fā)現(xiàn)問題。 rabbitmq 配置了兩套環(huán)境 , 以下為代碼示例 Queue, Exchange, Binding 自動生成配置: 通過運行項目,發(fā)現(xiàn)隊列,交換機

    2024年02月13日
    瀏覽(35)
  • 順序表創(chuàng)建,初始化,賦值,取值,查找,插入與刪除(附小例題)

    由n(n≥0)個數(shù)據(jù)結構相同的元素構成的有限序列。 1)除了第一個元素外,結構中的每一個數(shù)據(jù)元素均只有一個前驅 2)除了最后一個元素外,結構中的每一個數(shù)據(jù)元素均只有一個后驅 用一組地址 連續(xù)的存儲單元依次 存儲線性表的數(shù)據(jù)元素。 優(yōu)點 : 隨機存儲 缺點 :在做插

    2024年02月07日
    瀏覽(25)
  • 線性表(順序表)的初始化,取值,查找,插入及刪除(c++)

    線性表(順序表)的初始化,取值,查找,插入及刪除(c++)

    順序表中的基本操作以及描述(基本操作包括對線性表進行初始化,取值,查找元素,插入元素以及刪除元素) 構造一個空的順序表,并將表的長度設置為0,具體代碼實現(xiàn)如下: 本用例為方便,僅存儲5個數(shù)據(jù),可以更改循環(huán)次數(shù)從而增加線性表剛開始存儲元素的個數(shù)。 利用

    2024年02月07日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包