#include#include
#define stack_size 100
#define stackadd 10
typedef int selemtype;
typedef struct
sqstack;
void initstack(sqstack *s)
s->top = s->base; //look careful! 只能是s->base 賦值給s->top.
s->stacksize = stack_size;
}selemtype gettop(sqstack s,selemtype *e)
*e = *(s.top - 1); //棧頂指標始終在棧頂元素的下一位置
return *e;
}void push(sqstack *s, selemtype e) //把元素壓入棧頂
s->top = s->base + s->stacksize;
s->stacksize += stackadd;
}*(s->top++) = e;
}selemtype pop(sqstack *s,selemtype *e) //取出棧頂元素,並返回
*e = *(--s->top); //一定要如此,不能e = (--s->top)
return *e;
}/*此處可以省略return語句,因為e為指標,可以返回獲得的值。可如下所示
void pop(sqstack *s, selemtype *e)
*/int stackempty(sqstack s)
return 0;
}int stacklength(sqstack s)
void clearstack(sqstack *s) //注意清空與銷毀的區別
}void destroystack(sqstack *s)
s->top = -1;
}void main(void)
第三章作業1 棧
1 1 通過對堆疊s操作 push s,1 push s,2 pop s push s,3 pop s pop s 輸出的序列為 123。2分 f 應是231 1 2若乙個棧的輸入序列為1,2,3,n,輸出序列的第乙個元素是i,則第j個輸出元素是j i 1。2分 f 解析 一串資料依次通過乙個棧,並...
第三章 棧和佇列
棧和佇列 一 棧 1 棧的定義 棧是限定僅在表尾進行插入和刪除操作的線性表,允許插入和刪除的一端稱為棧頂,另一端稱為棧底,不含任何資料元素的棧稱為空棧。2 在任何時候出棧的元素都只能是棧頂元素,即最後最後入棧者最先出棧。所以棧中元素除了具有線性關係外,還具有後進先出的特性。3 棧的抽象資料型別定義 ...
第三章 棧和佇列
棧和佇列是兩種常用的資料結構,同時又是操作受限的線性表,也是兩種重要的抽象資料型別。1 1棧是限定僅在表尾進行插入和刪除操作的線性表。棧中元素具有線性關係和後進先出的特性。2雖然對插入和刪除操作的位置限制減少了棧的靈活性,但同時也使得棧的操作更有效更容易實現。3棧的儲存結構分兩種,一種是順序儲存結構...