标题:C++链表插入有一点不明白,想请教.. ...
只看楼主
阿宽
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-7-6
结帖率:0
已结贴  问题点数:20 回复次数:2 
C++链表插入有一点不明白,想请教.. ...
template<class datatype>
bool LIST <datatype> ::insert_data(datatype data,int i)
{
NODE <datatype> *current,* previous, * newnode;
int j=1;
if((i>length()+1)||(i<0));
{
    cout<<"插入不正确!";
        return false;
}
newnode=new NODE<datatype>;
if(newnode==NULL)
{
cout<<"内存无空间!";
riturn false;
}
newnode->data=data;//元素放入数据域.. ...第1句
newnode->next=NULL; //NULL放入指针域.. ...第2句
if(i==1)
{
newnode->next=head;  //这里不怎么懂.... ..第3句
head=newnode;        //....... ..... .....第4句
return true;         //这里返回的是什么...第5句
}
current=previous=head;
while(current!=NULL&&j<i)
{
previous=current;
current=current->next;
j++;
};
newnode->next=current;  //这句和 下一句 是什么意思?当i=1或者3时它的作用是?.. ...最后两句
previous->next=newnode;
return true;
}
.. ........ ...先谢谢大家的回答了!我还没分数,可以以后加吗?......... ..........


搜索更多相关主题的帖子: 链表 
2010-07-06 23:51
liuqisheng
Rank: 2
来 自:佛山
等 级:论坛游民
帖 子:1
专家分:10
注 册:2010-7-11
得分:10 
newnode->next=current; previous->next=newnode这两句分别是newnode所在的位置指向current;previous的位置指向newnode
2010-07-11 15:35
gq198718
Rank: 4
等 级:业余侠客
威 望:1
帖 子:86
专家分:200
注 册:2010-6-6
得分:10 
if(i==1)//i=1就是把插入节点位置是第一个节点时
{
newnode->next=head;  //把原来头结点位置给新节点.... ..第3句
head=newnode;        //新节点位置就变成了头结点 .....第4句
return true;         //表示插入成功...第5句
}
while(current!=NULL&&j<i)//当插入位置不是第一个节点,这里用一个循环 当循环跳出时  其操作与上面if语句类似
{
previous=current;
current=current->next;
j++;
};
newnode->next=current;  //跳出循环 与3、4功能类似的...最后两句
previous->next=newnode;
不知道我说明白么?
2010-07-12 11:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-312302-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.131861 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved