l*5
2 楼
没有ssn比较头疼。现在在申请ead中,ead下来之前,没有ssn的情况下,能先开个公司
号嘛?
号嘛?
f*c
3 楼
在网上看到,基本都是遍历都给定节点,然后将下一个节点指向当前的前一个节点。
大多数的例子,都是对int的链表,所以memory不是问题。如果链表的内容是一个很大
的数据结构,是否需要释放该节点的内存?如何释放?
请专家指点。
谢谢。
这里是我的一个实现。
"delete cur"试图释放节点内存,似乎多此一举,因为这里cur是个auto变量,函数返
回时自动释放内存。
void del(Node *&head, int n) {
Node *cur = head, *pre=NULL;
while (cur) {
if (n == cur->val) {
if (cur == head) {
/* if the node is the head*/
head = head->next;
return;
}
pre->next = cur->next; //next -> pre
delete cur; //free the memory. (?)
return;
}
pre = cur;
cur = cur->next;
}
}
大多数的例子,都是对int的链表,所以memory不是问题。如果链表的内容是一个很大
的数据结构,是否需要释放该节点的内存?如何释放?
请专家指点。
谢谢。
这里是我的一个实现。
"delete cur"试图释放节点内存,似乎多此一举,因为这里cur是个auto变量,函数返
回时自动释放内存。
void del(Node *&head, int n) {
Node *cur = head, *pre=NULL;
while (cur) {
if (n == cur->val) {
if (cur == head) {
/* if the node is the head*/
head = head->next;
return;
}
pre->next = cur->next; //next -> pre
delete cur; //free the memory. (?)
return;
}
pre = cur;
cur = cur->next;
}
}
t*s
4 楼
写退休前的。
N*0
5 楼
有ITIN吗?
h*c
6 楼
一般来讲
你要玩pointer就要玩smart pointer,你不知道有没有别的地方refer
不过smart pointer 基本已经没人提了
另外delete 之前应check null, delete 之后,set NULL
总之thread safe是不要想了
你要玩pointer就要玩smart pointer,你不知道有没有别的地方refer
不过smart pointer 基本已经没人提了
另外delete 之前应check null, delete 之后,set NULL
总之thread safe是不要想了
l*5
9 楼
没有ssn比较头疼。现在在申请ead中,ead下来之前,没有ssn的情况下,能先开个公司
号嘛?
号嘛?
N*0
11 楼
有ITIN吗?
p*o
14 楼
有空去看STL的实现,别以为链表简单,需要考虑exception safety的时候
自己琢磨的都不靠谱。
【在 f***c 的大作中提到】
: 在网上看到,基本都是遍历都给定节点,然后将下一个节点指向当前的前一个节点。
: 大多数的例子,都是对int的链表,所以memory不是问题。如果链表的内容是一个很大
: 的数据结构,是否需要释放该节点的内存?如何释放?
: 请专家指点。
: 谢谢。
: 这里是我的一个实现。
: "delete cur"试图释放节点内存,似乎多此一举,因为这里cur是个auto变量,函数返
: 回时自动释放内存。
: void del(Node *&head, int n) {
: Node *cur = head, *pre=NULL;
自己琢磨的都不靠谱。
【在 f***c 的大作中提到】
: 在网上看到,基本都是遍历都给定节点,然后将下一个节点指向当前的前一个节点。
: 大多数的例子,都是对int的链表,所以memory不是问题。如果链表的内容是一个很大
: 的数据结构,是否需要释放该节点的内存?如何释放?
: 请专家指点。
: 谢谢。
: 这里是我的一个实现。
: "delete cur"试图释放节点内存,似乎多此一举,因为这里cur是个auto变量,函数返
: 回时自动释放内存。
: void del(Node *&head, int n) {
: Node *cur = head, *pre=NULL;
O*d
15 楼
cur是一个auto变量不错,但它只是一个指针,函数返回时这个指针就不存在了,但它
指向的内容,如果你不delete,就还是在那里,变成了一个memory leak.
【在 f***c 的大作中提到】
: 在网上看到,基本都是遍历都给定节点,然后将下一个节点指向当前的前一个节点。
: 大多数的例子,都是对int的链表,所以memory不是问题。如果链表的内容是一个很大
: 的数据结构,是否需要释放该节点的内存?如何释放?
: 请专家指点。
: 谢谢。
: 这里是我的一个实现。
: "delete cur"试图释放节点内存,似乎多此一举,因为这里cur是个auto变量,函数返
: 回时自动释放内存。
: void del(Node *&head, int n) {
: Node *cur = head, *pre=NULL;
指向的内容,如果你不delete,就还是在那里,变成了一个memory leak.
【在 f***c 的大作中提到】
: 在网上看到,基本都是遍历都给定节点,然后将下一个节点指向当前的前一个节点。
: 大多数的例子,都是对int的链表,所以memory不是问题。如果链表的内容是一个很大
: 的数据结构,是否需要释放该节点的内存?如何释放?
: 请专家指点。
: 谢谢。
: 这里是我的一个实现。
: "delete cur"试图释放节点内存,似乎多此一举,因为这里cur是个auto变量,函数返
: 回时自动释放内存。
: void del(Node *&head, int n) {
: Node *cur = head, *pre=NULL;
d*i
17 楼
这个和节点数据是整数型还是复杂类型无关,之所以一定需要delete cur,是因为你创
建这个链表的时候,这个待删除的节点是这样创建的:Node *cur = new Node;所以
delete这行这个相当于是在把这个节点从链表中拿走以后释放这个节点所占用的内存。
【在 f***c 的大作中提到】
: 在网上看到,基本都是遍历都给定节点,然后将下一个节点指向当前的前一个节点。
: 大多数的例子,都是对int的链表,所以memory不是问题。如果链表的内容是一个很大
: 的数据结构,是否需要释放该节点的内存?如何释放?
: 请专家指点。
: 谢谢。
: 这里是我的一个实现。
: "delete cur"试图释放节点内存,似乎多此一举,因为这里cur是个auto变量,函数返
: 回时自动释放内存。
: void del(Node *&head, int n) {
: Node *cur = head, *pre=NULL;
建这个链表的时候,这个待删除的节点是这样创建的:Node *cur = new Node;所以
delete这行这个相当于是在把这个节点从链表中拿走以后释放这个节点所占用的内存。
【在 f***c 的大作中提到】
: 在网上看到,基本都是遍历都给定节点,然后将下一个节点指向当前的前一个节点。
: 大多数的例子,都是对int的链表,所以memory不是问题。如果链表的内容是一个很大
: 的数据结构,是否需要释放该节点的内存?如何释放?
: 请专家指点。
: 谢谢。
: 这里是我的一个实现。
: "delete cur"试图释放节点内存,似乎多此一举,因为这里cur是个auto变量,函数返
: 回时自动释放内存。
: void del(Node *&head, int n) {
: Node *cur = head, *pre=NULL;
I*t
19 楼
这个必须要delete,你每个节点的node都是已经分配好内存了。new出来的东西必须
delete,这个没得商量。
delete,这个没得商量。
I*t
20 楼
还有,你的接口参数既然是指针的引用,不如就用指针的指针,就更省事了,也不需要
什么搞个临时指针指向头部了。
什么搞个临时指针指向头部了。
f*c
21 楼
虽然在coding练习中,这是一个最基本的习题。但是看得出可考察的东西真多。
受教很多,谢谢各位。
受教很多,谢谢各位。
h*c
23 楼
gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)
[[email protected] ~]# gcc -V
[[email protected] ~]# gcc hello.cpp -l stdc++ -o hello.exe
[[email protected] ~]# cat hello.cpp
//refer to malloc example at cplusplus.com
#include
#include
int main() {
char * buffer;
buffer = (char*) malloc(10);
if (buffer == NULL) exit(1);
/*experiment this block, see what happens:
delete buffer;
delete buffer;
*/
if (buffer !=NULL) {
delete buffer;
buffer = NULL;
}
if (buffer !=NULL) {
delete buffer;
buffer = NULL;
}
}
[[email protected] ~]#
[[email protected] ~]# gcc -V
[[email protected] ~]# gcc hello.cpp -l stdc++ -o hello.exe
[[email protected] ~]# cat hello.cpp
//refer to malloc example at cplusplus.com
#include
#include
int main() {
char * buffer;
buffer = (char*) malloc(10);
if (buffer == NULL) exit(1);
/*experiment this block, see what happens:
delete buffer;
delete buffer;
*/
if (buffer !=NULL) {
delete buffer;
buffer = NULL;
}
if (buffer !=NULL) {
delete buffer;
buffer = NULL;
}
}
[[email protected] ~]#
x*9
25 楼
1. 还有一种实现方法是将当前要删除节点的值与下一个节点的值交换,再删除下一个
节点。不过与你的需求不符。
2. 内存管理对程序的性能非常重要。如果你的程序对性能非常敏感,建议使用内存池
对程序进行优化。
节点。不过与你的需求不符。
2. 内存管理对程序的性能非常重要。如果你的程序对性能非常敏感,建议使用内存池
对程序进行优化。
d*s
27 楼
这水平还不如国内本科生
相关阅读
solr4怎么添加coreScala question这段C++代码有啥问题问一个gradle的基础问题根据调研以及好虫建议一个弱智问题,请大牛看看:找出1000000以内质数数目,要求快Stackoverflow 有好用的手机客户端吗?像shapeways.com 这样的站点 用 wordpress 做可以吗?下个星期两件大事波士顿本地startup找兼职网站开发和美工 (转载)不同层次的人没法比rust语言酷毙了汗一把求助 怎么编辑 多个 .c files(比如a.c, b.c) 和一个.h file(ab (转载)1337之类的用什么框架highlight代码语法?如果在本版找团队Linux下incrementally地读一个正在被写的file月光.古巴what this message mean?不要说国内做IT的就不赚钱了