双向循环链表里面如何在头结点的后面增加一个节点
双向循环链表里面怎么在头结点的后面增加一个节点?我定义的链表[解决办法]//在链表的头结点后面增加一个节
双向循环链表里面怎么在头结点的后面增加一个节点?
我定义的链表
[解决办法]//在链表的头结点后面增加一个节点(增加第一个节点并将节点的信息保存在e中)
void Insert(DullLinkList &D,int &e){
DullLinkList s=new DNode; //插入的节点是s
DullLinkList p2=D; //插入位置的第二个位置
DullLinkList p1=D->prior; //插入位置的第一个位置
//以下为插入过程
s->data=e;
p1->next=s;
s->prior=p1;
s->next=p2;
p2->prior=s;
}
看你原来的程序,虽然只有两三句,感觉思维好乱
[解决办法]那我需要删除含有某个元素的节点怎么弄啊?
先自己弄,有问题了再贴出来让大家帮你看。我觉得写程序首先要学会的是思考
[解决办法]你仔细看清楚,何为循环链表??
[解决办法]循环的概念就是尾巴的下一个就是头
我给的代码,你可以在任何位置插入
[解决办法]
//在链表的头结点后面增加一个节点(增加第一个节点并将节点的信息保存在e中)
void Insert(DullLinkList &D,int &e){
DullLinkList s=new DNode; //插入的节点是s
DullLinkList p2=D; //插入位置的第二个位置
DullLinkList p1=D->prior; //插入位置的第一个位置
//以下为插入过程
s->data=e;
p1->next=s;
s->prior=p1;
s->next=p2;
p2->prior=s;
}
看你原来的程序,虽然只有两三句,感觉思维好乱
楼主要的是在头节点后增加一个节点,不是在尾部增加一个节点。。。。
你仔细看清楚,何为循环链表??
楼主的加入方法不也是循环码?
[解决办法]循环的概念就是尾巴的下一个就是头
我给的代码,你可以在任何位置插入
看清楚楼主的需求吧,“在链表头结点后面后面插入一个结点”。楼主这个写法,头结点D中的data是不存有效数据的,固定作为头结点的。
[解决办法]我只是说楼主的加入方法思维有点乱
插入,一定是在两者之间
虽然,"两者"中可能有一者为NULL
但即使如此,你只要体现了"两者"这个概念
思维就不会乱
就楼主的问题,就是DullLinkList p=new DNode;有问题
他根本不知道问题出在哪里
根源就是纠结于插入的逻辑
那么,在中间和头节点的插入你非要分开两种情况
不更乱套吗?
[解决办法]我只是说楼主的加入方法思维有点乱
插入,一定是在两者之间
虽然,"两者"中可能有一者为NULL
但即使如此,你只要体现了"两者"这个概念
思维就不会乱
就楼主的问题,就是DullLinkList p=new DNode;有问题
他根本不知道问题出在哪里
根源就是纠结于插入的逻辑
那么,在中间和头节点的插入你非要分开两种情况
不更乱套吗?
前面给他讲了,DullLinkList p=new DNode;有问题。他后面有一行p=D->next,不知道你们看到没有?
前面的new只会引起内存泄露,而不是链表乱插。
[解决办法]循环链表要在头部插入,我觉得应该用一种方法记住头部
在环上多个尾巴如何?