c++手打stack

最近没有新学什么有意思的东西,强行来凑字数


大概就是c++手敲stack吧,数据结构作业

自己敲之前觉得好难啊,去年听说有某某某手敲了STL库的所有函数,就觉得好厉害啊啊啊啊

其实自己敲了之后感觉,emm,也不过如此吧毕竟我这种菜鸡都能敲掉的东西

先放代码么(其实只有代码了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//
// Created by Norberta on 2017/10/25.
//
#include <iostream>
using namespace std;
class node {
public:
int Value;
node* Next;
node(int v, node* i) {
this -> Value = v;
this -> Next = i;
}
};
class LinkedStack {
public :
LinkedStack();
// ~LinkedStack();
void push(int item);
void pop();
int top();
bool empty();
int size();
private:
node* Header;
int count;
};
LinkedStack::LinkedStack() {
count = 0;
Header = NULL;
}
void LinkedStack::push(int item) {
node* newnode = new node(item, Header);
Header = newnode;
count++;
}
void LinkedStack::pop() {
node *tmp = Header;
Header = Header -> Next;
delete(tmp);
count--;
}
int LinkedStack::top() {
return Header -> Value;
}
bool LinkedStack::empty() {
return count == 0;
}
int LinkedStack::size() {
return count;
}
int main() {
//验证栈的设计是否正确
int item;
LinkedStack stack;
stack.push(3);//加入两个元素
stack.push(5);
item = stack.top();//查看栈顶
cout << item << endl;//5
stack.pop();//释放栈顶
item = stack.top();//输出当前栈顶
cout << item <<endl;//3
}

主要是有三个操作,push, top, 以及pop。

搞清楚三个操作的功能,其实不难敲代码的

其实也没什么

最后附赠,利用栈进行数值的进制转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
string multibaseOutput(int num, int b) {
string digitChar = "0123456789ABCDEF",
numStr = "";
LinkedStack stk;
do {
stk.push(num % b);
num /= b;
} while (num != 0);
while(!stk.empty()) {
numStr += digitChar[stk.top()];
stk.pop();
}
return numStr;
}

自认为代码写的清新脱俗,缩进和空格也很好看
应该不大能存在看不懂的情况
好了好了就是这样了
下篇写博客的时候一定学一点骚操作一定不再写作业了……