1樓:jw木有道理
flag=pop(s,&e);這裡不該這樣呼叫,直抄接使用flag=pop(s,e);
函式定義裡&表示引用實參,也即是說使用e物件本身進行運算,而如果沒有&則是使用e物件的拷貝進行運算
關於資料結構(c語言)鏈棧的問題
2樓:匿名使用者
你的while迴圈寫錯了,你想借助s遍歷,但是迴圈條件用的還是top,而top在迴圈內部沒有修改,所以專就進入死循屬環了,應該這麼改:
while(s!=null) //用s
還有,print函式應該是不想修改鏈棧的吧,只是讀取。所以引數就不要用a的地址了,直接用a傳遞就行了,保證函式體內不會意外修改a。函式引數要做相應的修改。
像這樣:都不用額外借助一個s了。
void print(coffee *top)}用print(a);呼叫就好了。
有問題hi聯絡。
3樓:豆品姜河靈
第一步是將值賦給開闢的節點,第二三步是利用頭插法將節點插入連結串列,第三步還有就是top也是棧頂的指標
c語言資料結構中鏈棧的問題
4樓:充實生活
這個鏈棧應該bai就是一個du
用連結串列弄的後進先出的
zhi棧結構dao。top指標永遠指向棧的最上面的回那個節點。
這個函式是新加一個節點到這個棧中,首先分配了空間給s,s是要新加入這個棧的那個節點。
s->next=top;就是讓s指向棧的最上面的那個元素。top=s;因為現在最上面的節點是s了,所以讓top指向s,使s成為棧頂指標。返回的就是棧的頂上那個節點的指標。
這答樣迴圈呼叫這個函式就可以不斷的新增新節點,加入的新節點總是指向前面的那個節點,同時新加入的節點成為頭節點。
5樓:匿名使用者
linkstack push_linkstack(linkstack top, datatype x)
關於c語言的鏈棧的出棧問題
6樓:匿名使用者
: 是。但這只是演算法描述,將需要的所有定義都省略了,只留下核心**,也不能算錯。
7樓:匿名使用者
取決於連結串列是否帶頭節點
如果是帶頭節點的連結串列,頭節點不動,用後一種方法
不帶頭節點的,那麼第一個節點被替換,用前一種方式
資料結構(c語言版)**不理解啊,例如函式形參裡什麼時候該加取地址符號,還有指標指來指去的,用指標 30
8樓:匿名使用者
函式形式引數用指標主要兩個情況,第一,為了函式中修改的內容帶回,第二,提高結構體等複雜引數傳遞效率
9樓:日向蘭蘭
都是那麼過來的,硬記
10樓:vi六
你沒有理解記憶體的管理和指標的原理
資料結構中的順序棧的進棧和出棧問題
include define stacksize 100typedef char datatype typedef struct seqstack void initstack seqstack s int stackempty seqstack s int stackfull seqstack s...
關於資料結構c語言鏈棧的問題
你的while迴圈寫錯了,你想借助s遍歷,但是迴圈條件用的還是top,而top在迴圈內部沒有修改,所以專就進入死循屬環了,應該這麼改 while s null 用s 還有,print函式應該是不想修改鏈棧的吧,只是讀取。所以引數就不要用a的地址了,直接用a傳遞就行了,保證函式體內不會意外修改a。函式...
支援子程式呼叫的資料結構是A 棧B 樹C 佇列D 二叉樹
參考書答案給的是a,我也在看這道題!額 理論上來說所有資料結構都支援子程式的呼叫。這個題的意思應該是子程式呼叫的時候能看成什麼樣的資料結構。嚴格來說是棧 因為遞迴呼叫子程式的時候就是先入後出的而且是線性的。雖然子程式也可以這樣呼叫 f i f i 1 f i 1 看起來像是樹,但是實際上還是深度優先...