建立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...