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 楼
这水平还不如国内本科生
相关阅读
有人了解Kerberos ticket, OpenSSO, OpenID, OpenID Connect吗?C 语言,初学者问题(4),读取字符指针内容以前有一篇Pinterest员工的架构文章data analyst 转成 软件工程师 有障碍吗大家都怎么用SpringIT职业困惑咨询怎么实现用aws东京节点的虚拟机来做跳板机beego 太糙了linkedin上无法隐藏自己的profile (转载)用swift 开发andriod同时写两个平台的app?Linus在狗狗能干过jeff dean,我看不一定。。。编程的宗派Awesome Web Crawler tool蝉说技术,螳螂大笑,黄雀爆笑。求Optical Character Recognition入门教程grunt太强大了(链接) Category Theory for Programmers by Bartosz Milewski各位公司里面请的心理学博士按什么价格来?用parse做ios app(xamarin)后端怎么样?