双循环链表的逆置
2015-04-16 19:35
501 查看
nodetype *invert(nodetype *head)
{
nodetype *p=head,*q,*s;
if(p!=NULL)
{
q=p->next;
head->next=head->left;/////逆置头结点
head->left=p->next;
while(q!=head)
{
s=q->next;
q->left=q->next;
q->next=p;
p=q;
q=s;
}
}
return head;
} 因为每一个节点都有左右指针,所以要逆置的话,只要从头结点开始,让每一个节点的左指针指向右节点,右指针指向左节点就可以了。但是需要强调的一点是,在创建双循环链表的时候,注意对头指针的处理,头指针也是有左右指针域的,如果一直都忘了头指针要指向最后一个节点的话,交换指针之后,就打印不出来啦!
{
nodetype *p=head,*q,*s;
if(p!=NULL)
{
q=p->next;
head->next=head->left;/////逆置头结点
head->left=p->next;
while(q!=head)
{
s=q->next;
q->left=q->next;
q->next=p;
p=q;
q=s;
}
}
return head;
} 因为每一个节点都有左右指针,所以要逆置的话,只要从头结点开始,让每一个节点的左指针指向右节点,右指针指向左节点就可以了。但是需要强调的一点是,在创建双循环链表的时候,注意对头指针的处理,头指针也是有左右指针域的,如果一直都忘了头指针要指向最后一个节点的话,交换指针之后,就打印不出来啦!
相关文章推荐
- 数据结构-【链表】单向链表的逆置和双向循环链表
- 双循环链表的逆置
- 关于动态存储分配函数的调用,在已经过排序的数组中查找及删除内容的操作,余数的分析,删除字符数组中的空格,对链表的逆置,在源字符串中查找子字符串的个数,函数指针以及函数的调用,循环赋值带来的问题以及插入
- 实现单向循环链表的创建、测长、打印、插入、删除及逆置
- 循环链表删除,逆置
- 单链表的逆置--普通循环方法(详细图解)
- 单向循环链表就地逆置
- 如何用C++递归的方法来将循环链表的unique data找出来
- 约瑟夫问题的循环链表实现
- 数据结构三循环链表
- 数据结构之表(4)单循环链表
- linux内核中有一个通用的双向循环list链表
- 2015年大二上-数据结构-链表(6)-循环双链表应用
- 单链表的建立,测长度,打印,删除,插入,逆置c++代码实例及运行结果
- 循环链表
- 带头节点的循环链表
- 双向循环链表代码编写
- 数据结构实验之链表三:链表的逆置
- 单链表逆序生成及逆置的完整实现
- 大话数据结构(三)——单向循环链表的java实现