棧的入棧,出棧,擴容,獲取長度等操作

2021-10-06 06:37:46 字數 1886 閱讀 5765

建立stack.h

#pragma once

//棧:一種訪問受限的線性表,只能在一端進行資料操作,能操作

//順序棧,棧頂設計在順序表的表尾處,因為順序表尾插和尾刪都是o(1)

#define init_size 10

typedef

struct seqstack

seqstack,

*pseqstack;

//初始化

void

initstack

(pseqstack ps)

;//入棧

bool push

(pseqstack ps,

int val)

;//出棧,獲取棧頂值,並刪除棧頂元素

bool pop

(pseqstack ps,

int*rtval)

;//獲取棧頂值,但不刪除

bool gettop

(pseqstack ps,

int*rtval)

;//判空

bool isempty

(pseqstack ps)

;//獲取長度

intgetlength

(pseqstack ps)

;//清除資料

void

clear

(pseqstack ps)

;//銷毀棧

void

destory

(pseqstack ps)

;

建立stack.cpp

#include

#include

#include

#include

"stack.h"

//判空

static

void

deterpointnull

(pseqstack ps)

}//初始化

void

initstack

(pseqstack ps)

//判滿

static bool isfull

(pseqstack ps)

//擴容

static

void

inc(pseqstack ps)

//入棧

bool push

(pseqstack ps,

int val)

ps->elem[ps->top++

]=val;

//ps->top++;

return true;

}//出棧,獲取棧頂值,並刪除棧頂元素

bool pop

(pseqstack ps,

int*rtval)

//rtval:輸出引數:通過輸出引數可以將多個值返回

*rtval=ps->elem[ps->top-1]

; ps->top--

;return true;

}//獲取棧頂值,但不刪除

bool gettop

(pseqstack ps,

int*rtval)

*rtval=ps->elem[ps->top-1]

;return true;

}//判空

bool isempty

(pseqstack ps)

//獲取長度

intgetlength

(pseqstack ps)

//清除資料

void

clear

(pseqstack ps)

//銷毀棧

void

destory

(pseqstack ps)

鏈棧的入棧 出棧 獲取長度 獲取棧頂值等相關操作

建立lstack.h pragma once 鏈式棧 利用帶頭節點的單鏈表實現 棧頂為第乙個資料結點,因為 頭插o 1 頭刪 o 1 有尾指標的的尾插 o 1 有尾指標的尾刪o n typedef struct snode snode,plstack 注意 鏈式棧不需要top,因為頭結點的next即...

棧元素入棧出棧操作(C)

元素入棧時,會先將棧壓入,top指標再向上加一。c語言如何實現呢,下面是入棧的 片段 typedef struct node sqstack void push sqstack s,int elem 入棧 s top elem,s本為指向node結構的乙個指標,本來對普通結構體指標賦值或者使用用 s...

棧的入棧,出棧,顯示入棧元素

要實現的功能如下 printf t t1.入棧 n printf t t2.出棧 n printf t t3.顯示棧內元素 n define maxsize 5 巨集定義 typedef struct stack 定義棧 void push stack p,int e void printstack...