CC++程序中遇到的一些问题及解决思路

CC++程序中遇到的一些问题及解决思路,第1张

CC++程序中遇到的一些问题及解决思路,第2张

RM码分中插入节点和内存泄漏(链表)
数据结构错误。
#定义l EN 256
#定义repl EN 20
typedef char bit 8;
typedef int bit 32;
typedef struct walacrnode
{
bit 32 wa[LEN];
struct walacrnode * next;
} WANode;
typedef结构节点
{
WANode * wnode;
WANode *阳极;
bit 32 connum;
bit 8 rep[REPLEN];
struct node * next;
}节点;
1.1用局部变量替换形参出错
函数名:void in subnode (wa node * sub,wa node * pre,node * p,booltype)
函数:在node p中插入一个链表-node sub (node p由链表和其他数据成员组成)当pre=0时,
我在这个函数中写了下面的代码。
//.....
WANode * wan = p-> wnode;
if(type)
wan = p->阳极;
如果(!pre)
{
sub-> next = wan;
wan = sub;
}
/...
原来子节点没有插入到预期的位置。更正后的代码如下。
//....
如果(!pre)
{
if(!type)
{
sub-> next = p-> wnode;
p-> wnode = sub;
}
else
{
sub-> next = p->阳极;
p->阳极= sub
}
}
/...
1.2当链表应用空不连续时,不能通过释放头节点来释放整个链表,而是要遍历链表,逐个释放。
为了保险起见,一个节点一个节点的释放,比如上面的节点结构。先New wnode,再new anode,只释放头节点,不能释放整个链表。
1。3插入表头节点时出错
void insert (/*..,*/node * root)
{
/...
if (rep!= NULL)
{
p-> next = rep-> next;
rep-> next = p;
}
else
{
p-> next = root;
root = p;
}
/...
}
当您这样做时,root将不会更改。函数结束后root指向的值会改变,但函数结束后root本身不会改变。
修正方法:使用指针引用,即函数声明变成。
void insert(/*...*/node * & root);

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » CC++程序中遇到的一些问题及解决思路

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情