问题描述
- C++的delete问题,初学者不太懂
-
void purchase(Goods* &f, Goods* &r, int w) //从队尾插入结点 { Goods* p = new Goods(w); p->next = NULL; if (f == NULL) f = r = p; else { r->next = p; r = r->next; } } void sale(Goods* &f, Goods* &r) { if (f == NULL) { cout << "no any goods! "; return; } Goods* q = f; f = f->next; delete q; ** // 上面都没有q=new,为什么这里会冒出来一个delete,难道是因为上一个函数的f吗?** q = NULL; cout << "saled. "; }
解决方案
你说的没错。
如果f为空,则让f指向新new出来的结点
如果f不为空,则将新的结点插入到队尾
purchase函数,参数使用的是指针的引用传递,会将new出来的结点p带出函数
解决方案二:
这个不太懂!
解决方案三:
如果f为空,则让f指向新new出来的结点
如果f不为空,则将新的结点插入到队尾
purchase函数,参数使用的是指针的引用传递,会将new出来的结点p带出函数
时间: 2024-12-22 21:44:43