C語言實現鏈棧

2022-09-01 15:48:12 字數 2840 閱讀 4120

我自己寫的**部分:

1 #include2 #include3 #include

4 typedef struct

node

5lstack,*lpstack;910

void initstack(lstack **top)

1116

17int push(lstack *top,char

e)18

26 p->next=top->next;

27 p->data=e;

28 top->next=p;29}

30/*

31//取出棧頂的元素,並將該棧頂元素彈出去

32char pop(lstack *top,char e)

3340

e=p->data;

41top->next=p->next;

42free(p);

43return e;44}

45//主函式中遍歷棧中元素則可更改為

46while(s->next)

49*/

50int pop(lstack *top,char *e)

5158 e=p->data;

59 top->next=p->next;

60free

(p);

61return1;

62}6364

int getlength(lstack *top)

6572

return

cnt;73}

74char gettop(lstack *top,char

e)75

82 e=p->data;

83return

e;84}85

void clear(lstack *top)

8694}95

intmain()

96107 printf("

len = %d\n

",getlength(s));

108 printf("

彈出棧頂元素! \n");

109 pop(s,&e);

110 printf("

len = %d\n

",getlength(s));

111112 printf("

取得棧頂元素:%c\n

",gettop(s,e));

113114 printf("

clear stack!\n");

115clear(s);

116 printf("

len = %d\n

",getlength(s));

117118

while(s->next)

122 printf("

len = %d\n

",getlength(s));

123return0;

124 }

#include#include

#include

#include

#define maxsize 100typedef

struct

node

lnode ,*linkstack;

void init(linkstack *top)

/*int empty(linkstack top)

*/char

get(linkstack top,char

e)

else

returne;}

int push(linkstack top,char

e) p->data=e;

p->next=top->next;

top->next=p;

return1;

}int pop(linkstack top,char *e)

top->next=p->next;

*e=p->data;

free

(p);

return1;

}int

length(linkstack top)

returni;}

void

clear(linkstack top)}//

形參有*代表是乙個指標,那麼傳遞實參的時候可以傳遞指標變數,此時直接用指標變數名;

//或者傳遞普通變數的位址,此時用取位址符&+變數名。

intmain()

printf(

"棧頂元素:%c\n

",get

(s,e));

printf(

"將f入棧\n");

push(s,'f

');printf(

"將g入棧\n");

push(s,'g

');printf(

"棧中元素個數為:%d\n

",length(s));

printf(

"將棧頂出棧:\n");

pop(s,&e);

printf(

"將棧頂出棧:\n");

pop(s,&e);

printf(

"將棧頂出棧:\n");

pop(s,&e);

printf(

"棧中元素個數為:%d\n

",length(s));

printf(

"出棧元素的序列:");

while(s->next)

printf("\n

");return0;

}

C語言實現鏈棧

鏈棧顧名思義,採用鍊錶實現,其優點是不存在棧滿上溢位的情況,其操作都是在頭結點之後進行的,入棧類似與頭插法建立鍊錶。注意頭結點與棧頂節點的區別,在沒有元素入棧時,棧僅有初始化的乙個頭結點,判斷其是否為空只需判斷s next是否為null。下面用c語言 實現了鏈棧的基本操作 執行環境 vs2017 執...

C語言實現鏈棧

不多說,直接上 include include define max 100 define ok 1 define error 1 define stack size 100 typedef int elemtype 資料庫 elemtype data 5 elemtype number 鏈棧的節點...

c語言實現鏈棧

c語言 棧的鏈式表示與實現 採用順序儲存的棧也具有順序表類似的缺點 採用順序儲存的棧,即順序棧的儲存空間無法事先確定,如果棧空間分配過小,可能會造成溢位 如果棧空間分配過大,又容易造成儲存空間浪費,因此可以採用鏈式儲存結構表示棧 include includetypedef int elemtype...