我是辛勤的小蜜蜂~~~哈哈~~
下面來介紹下順序棧。我們知道,棧具有乙個棧頂指標,有些教材中的順序棧的棧頂指標指向棧頂元素的下乙個位置,但本文中的棧頂指標都指向棧頂元素。其中,s->data[0]是棧底元素,top是棧頂指標。
#include#define stacksize 100 //假定預分配的棧空間最多為100個元素
typedef char datatype; //假定棧元素的資料型別為字元
typedef struct seqstack;
//********************************棧的一些基本操作**********************************
void initstack(seqstack *s)
int stackempty(seqstack *s)
int stackfull(seqstack *s)
void push(seqstack *s,datatype x)
s->data[++s->top]=x; //將棧頂指標加1後講x入棧
}void pop(seqstack *s)
s->top--; //將棧頂指標減1
}datatype stacktop(seqstack *s)
return s->data[s->top];
}void createstack(seqstack *s)
return ;
}//***********************************測試函式********************************
int main()
測試樣例:
設想如果將陣列的一端固定,看做棧底,另一端看做活動的,那麼我們可以用陣列來模擬順序棧,具體**如下。此時的指標相當於陣列的指標。但此時對於多個棧的情況,處理起來不太方便,而且以下**不具有很好的封裝性。程式的具體執行樣例與上一段**相同,就不再貼出了。錯誤之處,還請指出!
#include#define stacksize 100 //假定預分配的棧空間最多為100個元素
typedef char datatype; //假定棧元素的資料型別為字元
int top; //棧頂指標,這裡是全域性變數,不太好
//********************************棧的一些基本操作**********************************
void initstack()
int stackempty()
int stackfull()
void push(datatype *s,datatype x)
s[++top]=x; //將棧頂指標加1後講x入棧
}void pop()
top--; //將棧頂指標減1
}datatype stacktop(datatype *s)
return s[top];
}void createstack(datatype *s)
return ;
}//***********************************測試函式********************************
int main()
棧之順序棧
資料結構草草學過,不過沒有認真運用過。雖然知道一些最為基本的抽象型別及一些常用操作,不過叫我把這些基本的演算法寫出來我也是寫不出來的。因為常說資料結構 演算法是乙個程式設計師最基本的素質,所以這次認真加以複習。在複習的同時我盡量將自己學習的其他的一些基本知識比如c 中的物件導向思想也引入進來,同時也...
棧之順序棧
棧 限定僅在表尾進行插入或者刪除操作的線性表,又稱為先進後出的線性表 include include include include include include include include include include define inf 0x3f3f3f3f define ll lon...
棧,順序棧,鏈棧
棧作為一種限定性線性表,是將表的插入刪除限制為僅在表的一端進行,通常將表中允許插入刪除的一端叫做棧頂 top 因此棧頂的當前位置是動態變化的。棧的另一端叫做棧底 bottom 當棧中沒有元素時稱為空棧。插入操作稱為進棧或入棧,刪除操作稱為出棧或退棧。棧是先進後出的線性表,簡稱為lifo表。棧主要有兩...