生活随笔
收集整理的這篇文章主要介紹了
数据结构-栈(C语言代码)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
棧(stack)又名堆棧,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。
#include <stdio.h>
#include <stdlib.h>typedef struct Node {int data
;struct Node* next
;
}Node
;
Node
* initStack() {Node
* S
= (Node
*)malloc(sizeof(Node
));S
->data
= 0;S
->next
= NULL;return S
;
}
int isEmpty(Node
* S
) {if (S
->data
== 0 || S
->next
== NULL) {return 1;}else {return 0;}
}
int getTop(Node
* S
) {if (isEmpty(S
)) {return -1;}else {return S
->next
->data
;}
}
void push(Node
* S
, int data
) {Node
* node
= (Node
*)malloc(sizeof(Node
));node
->data
= data
;node
->next
= S
->next
;S
->next
= node
;S
->data
++;
}
int pop(Node
* S
) {if (isEmpty(S
)) {return -1;}else {Node
* node
= S
->next
;int data
= node
->data
;S
->next
= node
->next
;free(node
);return data
;}
}
void printStack(Node
* S
) {Node
* node
= S
->next
;while (node
){printf("%d->", node
->data
);node
= node
->next
;}printf("NULL\n");
}int main() {Node
* S
= initStack();push(S
, 1);push(S
, 2);push(S
, 3);push(S
, 4);printStack(S
);int i
= pop(S
);printf("current elem=%d\n", i
);printStack(S
);return 0;
}
總結
以上是生活随笔為你收集整理的数据结构-栈(C语言代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。