双循环链表的逆置
2012-06-13 22:02
141 查看
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;
}
因为每一个节点都有左右指针,所以要逆置的话,只要从头结点开始,让每一个节点的左指针指向右节点,右指针指向左节点就可以了。但是需要强调的一点是,在创建双循环链表的时候,注意对头指针的处理,头指针也是有左右指针域的,如果一直都忘了头指针要指向最后一个节点的话,交换指针之后,就打印不出来啦!
相关文章推荐
- 关于动态存储分配函数的调用,在已经过排序的数组中查找及删除内容的操作,余数的分析,删除字符数组中的空格,对链表的逆置,在源字符串中查找子字符串的个数,函数指针以及函数的调用,循环赋值带来的问题以及插入
- 实现单向循环链表的创建、测长、打印、插入、删除及逆置
- 双循环链表的逆置
- 循环链表删除,逆置
- 单链表的逆置--普通循环方法(详细图解)
- 单向循环链表就地逆置
- 数据结构-【链表】单向链表的逆置和双向循环链表
- 带有哨兵的双向循环链表
- 单链表逆序循环和递归2种方式
- 双向循环链表的基本操作
- 随机数与循环链表之间的问题
- C语言数据结构之循环链表的简单实例
- C++实现有哨兵的双向循环链表
- 单向循环链表实现约瑟环问题
- 数据结构 循环链表
- C++ 双循环链表简单实现
- 学习笔记------数据结构(C语言版) 双循环链表
- 数据结构实验之链表三:链表的逆置
- 数据结构_线性表_链式存储_单向循环链表的基本操作
- 单向链表循环