[问题] 新手 linked list 实作 stack 问题

楼主: xiefengan (安)   2017-09-12 22:26:48
开发平台(Platform): (Ex: Win10, Linux, ...)
Windows7
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
dev c++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
小弟我最近开始读data structure,除了读理论也开始用code实作
我写了一个push function 传入一个结构指标跟一笔data
在function 里面新增一个结构指标存push的资料
新结构指标的next location为传入的结构指标
再让传入的结构指标等于那个新结构指标
预期应该用top function输出的资料为我push进去的资料
结果跟push之前的资料一样
测试了一下内存位置
push之前跟之后的内存位置一样
(说的可能有点不清楚,看程式码应该比较好了解)
程式码(Code):(请善用置底文网页, 记得排版)
#include<iostream>
using namespace std;
struct Node
{
int data;
struct Node* next;
};
typedef struct Node STACK;
STACK* create(int);
void push(STACK*,int);
void pop(STACK*);
void top(STACK*);
int main()
{
STACK* sta=create(50);
cout<<sta<<endl;
push(sta,100);
cout<<sta<<endl;
return 0;
}
STACK* create(int data)
{
STACK* tmp= new STACK;
tmp->data=data;
tmp->next=NULL;
return tmp;
}
void push(STACK* tmp, int data)
{
STACK* use=new STACK;
use->data=data;
use->next=tmp;
tmp=use;
}
void pop(STACK* tmp)
{
STACK* use=new STACK;
use=tmp;
tmp=tmp->next;
}
void top(STACK* tmp)
{
cout<<tmp->data<<endl;
}
补充说明(Supplement):
作者: bluesoul (忙死你老爸)   2017-09-12 22:48:00
push 应该传pointer reference
作者: james732 (好人超)   2017-09-12 22:52:00
不知道为什么看到class+typedef就会觉得好烦躁(?).....明明是structure,我眼残了请无视二楼的白痴推文
作者: Raymond0710 (雷门)   2017-09-12 23:29:00
传两个星号 **
作者: outofyou   2017-09-12 23:38:00
call by value所以tmp参数当然不会变。要用楼上解法。
作者: school4303 (某爬虫类)   2017-09-13 16:23:00
传指标的指标?
作者: Lipraxde (Lipraxde)   2017-09-13 16:25:00
return一个新的stack point回来也可以吧?

Links booklink

Contact Us: admin [ a t ] ucptt.com