大一新生必看,自學必看,里昂詳解資料結構之堆疊

2021-10-23 17:26:18 字數 1911 閱讀 6721

堆疊,一種先進後出的線性表。僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。

順序棧結構描述如下:

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大學...