第三章(1) 順序棧

2021-07-02 01:51:44 字數 1044 閱讀 3736

#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棧的儲存結構分兩種,一種是順序儲存結構...