关于交换链表节点顺序
帮我看看这个有什么错?其中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焦点的交换