首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于交换链表节点顺序,该如何处理

2012-03-27 
关于交换链表节点顺序帮我看看这个有什么错?其中temp,temp1,p,head都是指向一个struct的,struct里包含一个

关于交换链表节点顺序
帮我看看这个有什么错?其中temp,temp1,p,head都是指向一个struct的,struct里包含一个*next和一个*previous分别指向下一个和前一个节点的地址,我就是想把链表按name的大小排列。十分感谢!

head-> previous   =   NULL

for   (i   =   1;   i   <   n;   i++)   {
    p   =   head;
    for   (j   =   1;   j   <=   n   -   i;   j++)   {
        if   ((strcmp   ((p   ->   name),   (p   ->   next   ->   name)))   >   0)   {
            if   (p   ==   head)   {
if   ((p   ->   next   ->   next)   !=   NULL   )   {
                    p   ->   next   -> next   ->   previous   =   p;
                }
temp   =   p   ->   next;
p   ->   next   =   p   ->   next   ->   next;
p   ->   next   ->   next   =   p;
p   ->   previous   =   temp;
temp   ->   previous   =   NULL;
            }   else   {
temp   =   p   ->   next;
p   ->   next   =   p   ->   next   ->   next;
p   ->   next   ->   next   =   p;
temp2   =   p   ->   previous;
p   ->   previous   =   temp;
temp   ->   previous   =   temp2;
p   ->   previous   ->   next   =   temp;
            }
        }   else   {
            p   =   p   ->   next;
        }
      }
}

[解决办法]
temp = p -> next;
p -> next = p -> next -> next;
p -> next -> next = p;
p -> previous = temp;
temp -> previous = NULL;
+ temp-> next=p;//到此完成了p p-> next焦点的交换

热点排行