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

2021-10-06 06:37:46 字數 1721 閱讀 7617

建立lstack.h

#pragma once

//鏈式棧:利用帶頭節點的單鏈表實現

//棧頂為第乙個資料結點,因為:頭插o(1),頭刪:o(1),有尾指標的的尾插:o(1),有尾指標的尾刪o(n)

typedef

struct snode

snode,

*plstack;

//注意:鏈式棧不需要top,因為頭結點的next即為top

//初始化棧

void

initstack

(plstack ps)

;//入棧

bool push

(plstack ps,

int val)

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

bool pop

(plstack ps,

int*rtval)

;//rtval:輸出引數

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

bool gettop

(plstack ps,

int*rtval)

;//判空

bool isempty

(plstack ps)

;//獲取長度

intgetlength

(plstack ps)

;//清除資料

void

clear

(plstack ps)

;//銷毀棧

void

destory

(plstack ps)

;

建立lstack.cpp

#include

#include

#include

#include

"lstack.h"

//判空

static

void

deterpointnull

(plstack ps)

}//初始化

void

initstack

(plstack ps)

//入棧(單鏈表的頭插)

bool push

(plstack ps,

int val)

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

bool pop

(plstack ps,

int*rtval)

//rtval:輸出引數

*rtval=ps->next->data;

snode *p=ps->next;

ps->next=p->next;

return true;

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

bool gettop

(plstack ps,

int*rtval)

*rtval=ps->next->data;

return true;

}//判空

bool isempty

(plstack ps)

//獲取長度

intgetlength

(plstack ps)

return count;

}//清除資料

void

clear

(plstack ps)

//銷毀棧

void

destory

(plstack ps)

}

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

建立stack.h pragma once 棧 一種訪問受限的線性表,只能在一端進行資料操作,能操作 順序棧,棧頂設計在順序表的表尾處,因為順序表尾插和尾刪都是o 1 define init size 10 typedef struct seqstack seqstack,pseqstack 初始化...

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

要實現的功能如下 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...

由入棧 出棧序列求所有出棧 入棧序列

給出乙個陣列,代表入棧順序,求所有出棧可能性?給出乙個陣列,代表出棧順序,求所有入棧可能性?這兩題解法相同,可利用全排列求出所有組合,再進行可能性分析。全排列 如下 public list permute int nums 這種方法是什麼意思呢?例如abc,在第0位有三種可能,axx,bxx,cxx...