作者xiefengan (AnAnAnAnAnAn)
看板C_and_CPP
标题[问题] 新手 linked list 实作 stack 问题
时间Tue Sep 12 22:26:48 2017
开发平台(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):
--
放弃是最简单的
也是最无趣的
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.255.164.250
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1505226419.A.64F.html
※ 编辑: xiefengan (111.255.164.250), 09/12/2017 22:33:42
1F:→ bluesoul: push 应该传pointer reference09/12 22:48
我有用过pointer reference
但是想说如果遇到用c实作怎麽办
我想说我传入push的方式应该是
call by address,不过看起来好像不是
2F:→ james732: 不知道为什麽看到class+typedef就会觉得好烦躁(?)09/12 22:52
3F:→ james732: .....明明是structure,我眼残了请无视二楼的白痴推文09/12 22:52
※ 编辑: xiefengan (111.255.164.250), 09/12/2017 23:00:15
4F:推 Raymond0710: 传两个星号 **09/12 23:29
5F:推 outofyou: call by value所以tmp参数当然不会变。要用楼上解法。09/12 23:38
6F:推 school4303: 传指标的指标?09/13 16:23
谢谢楼上几位,看来我对指标还不够熟悉
7F:→ Lipraxde: return一个新的stack point回来也可以吧?09/13 16:25
试过应该可以,只是想试试别种写法
※ 编辑: xiefengan (111.255.46.121), 09/13/2017 17:19:00