链栈的建立、判空、入栈、出栈、求长、访顶、清空和销毁
生活随笔
收集整理的這篇文章主要介紹了
链栈的建立、判空、入栈、出栈、求长、访顶、清空和销毁
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#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;//表示棧沒(méi)初始化成功exit(0);}if (s->next == NULL){return true;}return false;
}
//進(jìn)行入棧操作push函數(shù)
void push(stack &s, int element)
{//先開(kāi)辟一個(gè)空間存儲(chǔ)新的數(shù)據(jù)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;//按照出戰(zhàn)的過(guò)程,先進(jìn)后出,找到棧首的下一個(gè)結(jié)點(diǎn),使棧首指向取出結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)對(duì)象s->next = p->next;int element = p->data;delete p; //清空取出數(shù)據(jù)的空間return element;
}
int getlength(stack& s) //取棧的地址,進(jìn)行查看棧的長(zhǎng)度
{Node* p = s;int length = 0;while (p->next != NULL){p = p->next;length++;}return length;
}
//獲取棧頂?shù)臄?shù)據(jù)
int gettop(stack& s)
{if (isempty(s)){exit(1);}return s->next->data;
}
//清空棧的空間 這只是銷(xiāo)毀棧的存儲(chǔ)數(shù)據(jù)的空間,沒(méi)有銷(xiāo)毀棧首的位置
void clearstack(stack& s)
{while (!isempty(s)){pop(s);}
}
//銷(xiāo)毀??臻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;
}
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結(jié)
以上是生活随笔為你收集整理的链栈的建立、判空、入栈、出栈、求长、访顶、清空和销毁的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 双链表的建立、求长、定位、插入、删除、输
- 下一篇: 链队列的建立、判空、入队、出队、求长、访