Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct Element{
- char member;
- // pointer untuk menunjukkan Element Selanjutnya
- Element* next;
- };
- // membuat alias sebuah pointer
- typedef Element* pointer;
- // membuat alias sebuah stack
- typedef pointer Stack;
- Stack S;
- // membuat sebuah stack
- void createStack(Stack& Top){
- Top = NULL;
- }
- // membuat elemen baru yang akan dimasukkan ke stack
- void createElement(pointer& new_element){
- // mengalokasikan memori untuk sebuah elemen baru
- new_element = new Element;
- cout<<"Elem (char) : "; cin>>new_element->member;
- new_element->next = NULL;
- }
- int peek(Stack Top){
- return Top->member;
- }
- bool isEmpty(Stack Top){
- if (Top == NULL){
- return true;
- } else {
- return false;
- }
- }
- // sama seperti insert first
- void push(Stack& Top, pointer pNew){
- cout<<"Push Stack"<<endl;
- if (isEmpty(Top))
- Top = pNew;
- else {
- pNew->next = Top;
- Top = pNew;
- }
- }
- // sama seperti delete first
- void pop(Stack& Top, pointer& pDel){
- cout<<"Pop Stack"<<endl;
- if (isEmpty(Top)){
- cout<<"Stack Underflow"<<endl;
- pDel = NULL;
- } else if (Top->next == NULL){
- pDel = Top;
- Top = NULL;
- } else {
- pDel = Top;
- Top = Top->next;
- pDel->next = NULL;
- }
- }
- void traversal(Stack Top){
- pointer pHelp = Top;
- if (isEmpty(Top)){
- cout<<"Stack Empty"<<endl;
- } else {
- cout<<"Top\n^\n|\n";
- do {
- cout<<pHelp->member<<endl;
- pHelp = pHelp->next;
- } while(pHelp != NULL);
- }
- }
- int main()
- {
- pointer pElement;
- createStack(S);
- createElement(pElement);
- push(S, pElement);
- createElement(pElement);
- push(S, pElement);
- createElement(pElement);
- push(S, pElement);
- pop(S, pElement);
- traversal(S);
- // cout<<pElement->member;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement