資料結構 堆疊的基礎
代碼寫的十分詳細,直接看代碼
//資料結構 堆疊
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
#define ok 1
#define error 0
#define overflow -2
//定義堆疊的成員
typedef struct stack
{
int* base;
int* top;
int stacksize;
}sqstack;
//創建一個堆疊
int initsqstack(sqstack& s)
{
s.base = new int[100];
if (s.base == 0) exit(overflow);
s.top = s.base;
s.stacksize = 100;
return ok;
}
//壓堆疊
int push(sqstack& s, int e)
{
if (s.top - s.base >= s.stacksize - 1) return error;
*s.top++ = e;
//s.top++;
return ok;
}
//彈堆疊
int pop(sqstack& s, int& e)
{
if (s.top == s.base) return error;
e = *--s.top;
return ok;
}
//讀堆疊頂
int gettop(sqstack s, int& e)
{
if (s.top == s.base) return error;
e = *(s.top - 1);
return ok;
}
//讀堆疊的長度
int len(sqstack s)
{
return s.top - s.base;
}
//數值轉換把數十進制數n,轉化為p進制的數
void conversion(int n, int p)
{
int e;
sqstack s;
initsqstack(s);
while (n)
{
push(s, n % p);
n /= p;
}
while (s.top != s.base)
{
pop(s, e);
cout << e << " ";
}
cout << endl;
}
int main()
{
sqstack s;
int e, n;
initsqstack(s);
cout << "請輸入堆疊的元數個數n的值:" << endl;
cin >> n;
int r = n;
cout << "請輸入堆疊 " << n << " 個元素的值:" << endl;
while(n--)
{
cin >> e;
push(s, e);
}
cout << "輸出堆疊頂元素的值:" << endl;
gettop(s, e);
cout << e << endl;
cout << "輸出堆疊的長度:" << endl;
int l = len(s);
cout << l << endl;
cout << "輸出堆疊的 " << r << " 個元素的值為:" << endl;
while (s.top != s.base)
{
pop(s, e);
cout << e << " ";
}
cout << endl;
cout << "進制轉換" << endl;
conversion(16, 2);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/277140.html
標籤:其他
上一篇:一些指標與地址題目
下一篇:四月月賽H題
