我很难理解为什么temp
在声明后为何将其值从9更改为1:
last->data = (*head_ref)->data;
我当前的目标是反转包含1、3、5、7和9的链表的第一个和最后一个节点中的数据。
我得到的结果是9、3、5、7、9。
如果temp
等于last等于head_ref
,即使我在更改last之后没有设置temp
,也会改变last影响temp = last
吗?
void reverseNode(struct Node** head_ref)
{
struct Node *last = *head_ref;
while(last->next != NULL)
{
last = last->next;
}
struct Node *temp = last;
printf("%d ", temp->data); // temp->data = 9
last->data = (*head_ref)->data;
printf("%d ", temp->data); // temp->data = 1
(*head_ref)->data = temp->data;
}
谢谢!
答案 0 :(得分:-1)
void reverse(){
struct node *first=NULL,*second=start,*third=start->next;
if(start==NULL){
printf("No Element to Reverse\n");
}else{
while(second!=NULL){
second->next=first;
first=second;
second=third;
if(third!=NULL){
third=third->next;
}
}
start=first;
}
display(); }
此代码将反转整个链表,而不会丢失数据。