用C語言編的鏈棧在執行時出錯

時間 2021-09-02 20:58:47

1樓:匿名使用者

#include

#include

typedef struct node

lstack;

void init(lstack *s)

int push(lstack *s,int e)int pop(lstack *s)

p = s->next;

e = p->date;

s->next = p->next;

printf("出戰成功!\n");

free(p);

return 1;

} int get(lstack *s)

e = s->next->date;

return e;

} void visit(lstack *s) }int main()

2樓:匿名使用者

預編譯中應該寫上 #include

其實是因為主函式中根本就沒有建立指標s,若在init()函式中建立必須有返回型別為lstack的指標,使的主函式中的s才能建立,即像2樓修改的,當然也可以不用初始化函式,像3樓的回答。因為在呼叫其他函式是都是臨時開闢的內從空間,但傳的是指標,所以編譯時沒錯,但在連線時地址不一致導致了問題,只有主函式中真實的建立了頭指標,才不會導致錯誤。

3樓:匿名使用者

不用init()

把lstack s;

init(&s);

兩句換成

lstack s = ;

就沒問題

除錯知init()函式返回後

結構體中s.next不為空

導致visit()溢位

樓上的牛啊

4樓:匿名使用者

大哥,你仔細分析下你的邏輯…………

5樓:匿名使用者

在vc6下調式通過

#include

#include

#include

typedef struct node

lstack;

lstack* init(lstack *s,int e)int push(lstack *s,int e)int pop(lstack *s)

p = s->next;

e = p->date;

s->next = p->next;

printf("出戰成功!\n");

free(p);

return 1;

} int get(lstack *s)

e = s->next->date;

return e;

} void visit(lstack *s) }void main()

鏈棧如何定義,鏈棧的c 版本定義

include include typedef int elemtype typedef struct linknodelistack 鏈棧型別的定義 初始化棧 銷燬棧 求戰的長度 void stacklength listack s printf 目前此棧的長度為 d n i 判斷棧是否為空棧 v...

C語言用棧編寫括號匹配

記住一座城 define stack size 160 棧空間大小 define flase 0 define true 1 typedef int bool 棧定義 typedef struct stack void initializing stack s 初始化棧為空 void destory...

關於C語言和程式設計,用C語言程式設計和用C 語言程式設計區別大嗎?

一 工欲善其事,必先利其器 這裡介紹幾個學習c語言必備的裝置和書籍 a 開發環境 例如turbo c 2.0,這個曾經佔據了dos時代開發程式的大半個江山。但是現在windows時代,用turbo c有感覺不方面,編輯程式起來很吃力,並且拖放,更沒有函式變數自動感應功能,查詢參考資料也不方便。建議使...