【发布时间】:2009-10-12 04:41:28
【问题描述】:
编辑:是否可以不使用new? (不要动态分配内存)
我认为 push 是错误的,但我不知道在哪里、如何以及为什么。这是代码:
struct Node {
string fileName;
Node *link;
};
int size(Node *&flist) {
int count = 0;
Node *tempPtr = flist;
while (tempPtr != 0) {
count += 1;
tempPtr->link = (tempPtr->link)->link;
}
return count;
}
Node* push(Node *&flist, string name) {
Node temp;
Node *tempPtr = &temp;
temp.fileName = name;
temp.link = flist;
cout << tempPtr->fileName << endl;
cout << (tempPtr->link)->fileName << endl;
return tempPtr;
}
int main( int argc, char *argv[] ) {
Node aNode;
Node *flist = &aNode;
flist->fileName = "a";
flist->link = NULL;
push(flist, "b");
int s = size(flist);
cout << "size: " << s << endl;
}
输出是
b
a
size: 0
谢谢。
【问题讨论】:
-
我认为您缺少来自
main的一两行代码。 -
具体来说,没有提到文件“b”,也没有使用 push() 函数。
标签: c++ pointers linked-list segmentation-fault