首页 > 代码库 > 【ThinkingInC++】26、下推栈(push_down stack)不会越出内存
【ThinkingInC++】26、下推栈(push_down stack)不会越出内存
头文件
/** * 功能:下推栈(push_down stack)不会越出内存 * 时间:2014年8月18日08:13:36 * 作者:cutter_point */ #ifndef STACK_H_INCLUDED #define STACK_H_INCLUDED struct Stack { struct Link { void* data; //这个结构的数据 Link* next; //这个指向这种结构的指针 void initialize(void* dat, Link* nxt); //初始化这个结构,元素和next指向 }*head; void initialize(); void push(void* dat); void* peek(); //返回栈顶的元素,但是不删除这个元素 void* pop(); void cleanup(); }; #endif // STACK_H_INCLUDED
定义文件
/** * 功能:下推栈(push_down stack)不会越出内存,定义 * 时间:2014年8月18日08:12:07 * 作者:cutter_point */ #include"Stack.h" #include"../require.h" using namespace std; //struct link里面的额函数 //void initialize(void* dat, Link* nxt) 初始化这个结构,元素和next指向 void Stack::Link::initialize(void* dat, Link* nxt) { data=http://www.mamicode.com/dat;>测试文件
/** * 功能:下推栈(push_down stack)不会越出内存,定义,测试 * 时间:2014年8月18日08:13:31 * 作者:cutter_point */ #include"Stack.h" #include"Stack.cpp" #include"../require.h" //这个头文件是用直接给的,不是自己写的,不会用 #include<fstream> #include<iostream> #include<string> using namespace std; int main(int argc, char* argv[]) //argv[1]程序的路径名字 { //requireArgs(argc, 1); //这个有干扰作用 //ifstream in(argv[1]); //argv[1]程序的路径名字,这个在这里似乎不行 ifstream in("StackTest.cpp"); //argv[1]程序的路径名字 //assure(in, argv[1]); //注释掉,反而可以运行 Stack textlines; textlines.initialize(); string line; //重文件中提取string while(getline(in, line)) textlines.push(new string(line)); //存入链表中 //取出输出来,逆序输出 string* s; while((s=(string*)textlines.pop()) != 0) { cout<<*s<<endl; delete s; } textlines.cleanup(); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。