最近没有新学什么有意思的东西,强行来凑字数
大概就是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
| #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(); 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; stack.pop(); item = stack.top(); cout << item <<endl; }
|
主要是有三个操作,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; }
|
自认为代码写的清新脱俗,缩进和空格也很好看
应该不大能存在看不懂的情况
好了好了就是这样了
下篇写博客的时候一定学一点骚操作一定不再写作业了……