带头结点链表的第一个结点是头结点?还是头结点的下一个结点?

 我来答
uw86vmt
2011-03-31 · TA获得超过741个赞
知道小有建树答主
回答量:652
采纳率:0%
帮助的人:284万
展开全部

设链表结点结构
typedef struct Node{
DataType data;
struct Node *next; //下一个结点
struct Node *prev; //上一个结点
}Node;
若head为头结点指针

Node *p1,*p2;
p1 = head->next; //p1为第一个结点
p2 = p1->next; //p2为第二个结点
p2->next->prev = p1; //第二个结点的后继(第三个结点)的前驱为第一个结点
p1->next = p2->next; //第一个结点的后继为第二个结点的后继(第三个结点)
p1->prev = p2; //第一个结点的前驱为第二个结点
p2->next = p1; //第二个结点的后继为第一个结点
p2->prev = head; //第二个结点的前驱为头结点
head->next = p2; //头结点的后继为第二个结点
完毕 ,以上是用两个临时指针的方法,更自由,下面是一个临时指针的方法
Node *p;
p = head->next; //p为第一个结点
p->next->next->prev = p; //第三个结点的前驱为第一个结点
p->next->prev = head; //第二个结点的前驱为头结点
p->prev = p->next; //第一个结点的前驱为第二个结点
head->next = p->next; //头结点的后继为第二个结点 ---×
p->next = p->next->next; //第一个结点的后继为第三个结点
head->next->next = p; //第二个结点(×行中以转为头结点的后继)的后继为第一个结点
完毕
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式