資料結構 C語言描述 讀書筆記之棧

2021-06-17 22:45:41 字數 1510 閱讀 1536

棧又稱堆疊,它是一種運算受限的線性表,其限制是僅允許在表的一端進行插入和刪除運算。一般把對棧進行運算的一端稱為棧頂,另一端稱為棧底。

一,棧的順序儲存:

struct stacksq;

初始化棧s為空:

void initstack(struct stacksq* s,int ms)

s->maxsize=ms;

s->stack=malloc(ms*sizeof(elemtype));

if(!s->stack)

s->top=-1; }

新元素進棧,即把它插入到棧頂

void push(struct stacksq* s,elemtype x)

void againmalloc(struct stacksq)

s->stack=p;

s->maxsize=2*s->maxsize; }

刪除棧頂元素並返回值

elemtype pop(struct stacksq* s)

s->top--;

return s->stack[s->top+1]; }

讀取棧頂元素的值

elemtype peek(struct stacksq *s)

return s->stack[s->top]; }

判斷s是否為空,若是則返回1表示真,否則返回0表示假

int emptystack(struct stacksq* s)

清除棧s中的所有元素,釋放動態儲存空間

void clearstack(struct stacksq* s)

} 二, 棧的鏈結儲存:

棧的鏈結儲存結構與線性表的鏈結儲存結構相同,也是通過由結點構成的單鏈表實現的,此時表頭指標被稱為棧頂指標,由棧頂指標指向的表頭結點被稱為棧頂結點,整個單鏈表被稱為鏈棧,即鏈結儲存的棧。

初始化鏈棧為空

void initstack(struct snode** hs)

向鏈棧中插入乙個元素

void push(struct snode** hs,elemtype x)

newp->data=x;

newp->next=*hs;

*hs=newp; }

從鏈棧中刪除乙個元素並返回它

elemtype pop(struct snode** hs)

p=*hs;*hs=p->next;

tmp=p->data;

free(p);

return tmp; }

讀取棧頂元素

elemtype peek(struct snode** hs)

return (*hs)->data; }

檢查鏈棧是否為空

int eemptystack(struct snode** hs)

清空鏈棧

void clearstack(struct snode** hs)

*hs=null; }

棧的乙個非常重要應用場景就是遞迴。

資料結構 python語言描述 讀書筆記1

coding utf 8 對集合使用模式匹配 rgbtuple 255,0,0 ff0000 r,g,b hexstring rgbtuple 模式匹配可以跟蹤遞迴的過程,用來除錯遞迴。coding utf 8 defoursum lower,upper,margin 0 page 18 一種跟蹤遞...

《資料結構和演算法分析 C語言描述》讀書筆記

第一章主要講的是數學知識的複習,指數,級數什麼的,最後,淺層次的談了一下遞迴。當乙個函式用它自己來定義時就稱為是遞迴 recursive 的,c語言是允許遞迴的。但重要的是要記住,c提供的僅僅是遵循遞迴思想的一種企圖。不是所有的數學遞迴函式都能有效地或者正確地由c的遞迴模擬來實現。舉個遞迴的小例子 ...

資料結構(C語言描述)棧

棧是一種特殊的表,這種表只在表首進行插入和刪除操作。因此,表首對棧來說具有特殊的意義,稱為棧頂。表尾稱為棧底。不含任何元素的棧稱為空棧。假設乙個棧s中的元素為a n a n 1 a 1 則稱a 1 為棧底元素,a n 為棧頂元素。棧中元素按a 1 a 2 a n 的次序進棧。在任何時候,出棧的元素都...