堆疊,一種先進後出的線性表。僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。
順序棧結構描述如下:
typedef
struct stack
sqstack;
初始化棧:
void
intistack
(sqstack *s)
入棧:
int
push
(sqstack* s, elemtype e)
*(s->top)
= e;
s->top++
;return1;
}
出棧:
void
pop(sqstack* s, elemtype *e)
編寫乙個程式,利用棧的先進後出的特點,實現對於輸入的任意乙個非負十進位制整數,列印輸出與其等值的二進位制數。
constexpr auto stack_init_size =20;
constexpr auto stackincreace =20;
typedef
char elemtype;
typedef
int status;
typedef
struct
sqstack;
status initstack
(sqstack &s)
;status push
(sqstack &s, elemtype e)
;status pop
(sqstack &s, elemtype e)
;status stackempty
(sqstack s)
;status initstack
(sqstack &s)
s.stacksize = stack_init_size;
s.top = s.base;
return true;
}status push
(sqstack &s, elemtype e)
s.top = s.base + s.stacksize;
s.stacksize +
= stack_init_size;
}*s.top = e;
s.top++
;return true;
}status pop
(sqstack &s, elemtype *e)
else
}status stackempty
(sqstack s)
return false;
}int
main()
while(!
stackempty
(stack)
)}
棧和佇列有什麼相同和區別?棧和佇列都是一種特殊的線性表,只允許在端點處插入和刪除元素,區別在於棧是先進後出,後進先出,佇列是先進先出,後進後出。
(tips:下一博講佇列)
大一新生必看,自學必看,里昂詳解資料結構之線性表
1 順序表插入操作的基本步驟 要在順序表中第 i 個資料元素之前插入一 個資料元素 x,首先要判斷插入位置 i 是否合法,假設線性表的長為 n,則 i 的 合法值範圍 1 i n 1,若是合法位置,就再判斷順序表否滿,如果滿,則增 加空間或結束操作,如果不滿,則將第 i 個資料元素及其之後的所有資料...
大一新生必看,自學必看,里昂詳解資料結構之鍊錶
1 鍊錶建立操作的基本步驟 鍊錶是乙個動態的結構,它不需要分配空間,因此建立鍊錶的過程是乙個結點 逐個插入 的過程。先建立乙個只含頭結點的空單鏈表,然後依次生成新結點,再不斷地將其插入到鍊錶的頭部或尾部,分別稱其為 頭插法 和 尾插法 2 鍊錶查詢操作的基本步驟 因煉表是一種 順序訪問 的結構,則要...
大一新生該學的
看到老師讓給新入學學弟們點經驗。1.別為了適用而學習。因為你暫時還不知道你以後的職業,還不能規劃自己的職業道路。所以一定要面廣,也不要太鑽研,已理解和了解為主。2.鍛鍊自己的能力,提高個人素質。這是你終身適用的。在以後的道理中,你更主要的是跟人在打交道。3.經歷大學該經歷的。去看看10個或100大學...