链栈的建立、判空、入栈、出栈、求长、访顶、清空和销毁
生活随笔
收集整理的這篇文章主要介紹了
链栈的建立、判空、入栈、出栈、求长、访顶、清空和销毁
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include<iostream>
using namespace std;
typedef struct node
{int data;struct node*next;
}Node, *stack;//初始化棧
void initialsatck(stack &s)
{s = new Node;s->next = NULL;
}
//判斷棧是不是空的
bool isempty(stack &s)
{if (NULL == s){cout << "棧不存在" << endl;//表示棧沒初始化成功exit(0);}if (s->next == NULL){return true;}return false;
}
//進行入棧操作push函數
void push(stack &s, int element)
{//先開辟一個空間存儲新的數據Node*p = new Node;p->data = element;p->next = s->next;s->next = p;
}//出棧操作
int pop(stack &s)
{if (isempty(s)){exit(1);}Node* p = s->next;//按照出戰的過程,先進后出,找到棧首的下一個結點,使棧首指向取出結點的下一個結點對象s->next = p->next;int element = p->data;delete p; //清空取出數據的空間return element;
}
int getlength(stack& s) //取棧的地址,進行查看棧的長度
{Node* p = s;int length = 0;while (p->next != NULL){p = p->next;length++;}return length;
}
//獲取棧頂的數據
int gettop(stack& s)
{if (isempty(s)){exit(1);}return s->next->data;
}
//清空棧的空間 這只是銷毀棧的存儲數據的空間,沒有銷毀棧首的位置
void clearstack(stack& s)
{while (!isempty(s)){pop(s);}
}
//銷毀??臻g
void destorystack(stack& s)
{while(!isempty(s)){pop(s);}delete s;s = NULL;
}
void print(bool b)
{if (b)cout << "yes" << endl;elsecout << "no" << endl;
}
int main()
{stack s;initialsatck(s);for (int i = 0; i < 10; i++){push(s, i);}cout << getlength(s) << endl;while (!isempty(s)){cout << pop(s) << endl;}cout << getlength(s) << endl;clearstack(s);cout << getlength(s) << endl;destorystack(s);system("pause");return 0;
}
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的链栈的建立、判空、入栈、出栈、求长、访顶、清空和销毁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双链表的建立、求长、定位、插入、删除、输
- 下一篇: 链队列的建立、判空、入队、出队、求长、访