#include #include typedef struct student
student;typedef struct list list,*list;
list *createlist ();
void paixu(list l);//比較笨拙的一種方法
list *reverse(list l);
int main()
//paixu(p);
reverse(p);
q = p->next;
printf("排序結果:\n");
while(q!=null)
}list *createlist ()
p->next = null;
return ph;
}void paixu(list l)
p = q;
printf("\nlen = %d\n",len);
for(;inext;
}temp = p->a;
p->a = q->a;
q->a = temp;
p = p->next;
q = p;
}}list *reverse(list l)
//printf("p1 = %d,next = %d\n ",p1->number,p1->next->number);
l->next=p1; //將煉表頭節點指向p1
return l;
}
list *reverse(list l)
分析:
假設需要逆序的單鏈表為:
則逆序以後的鍊錶為:
過程:(1)取p1指向header->next
p1=stu->next;
p2保留p1->next
p2=p1->next;
將p1->next置為null,因為單鏈表逆序以後,當前的p1節點為尾節點
p1->next=null;
(2)取p3保留p2->next
p3=p2->next;
將p2插入p1之前
p2->next = p1;
p1指向p2指向的節點
p1=p2;
p2指向p3指向的節點
p2=p3;
迴圈一次修改以後的單鏈表如下:
(3)重複步驟(2)
迴圈一次修改以後的單鏈表如下:
(4)將header->next指向p1,完成整個單鏈表的逆序
單鏈表逆序
第二個題目是很經典的 單鏈表逆序 問題。很多公司的面試題庫中都有這道題,有的公司明確題目要求不能使用額外的節點儲存空間,有的沒有明確說明,但是如果面試者使用了額外的節點儲存空間做中轉,會得到乙個比較低的分數。如何在不使用額外儲存節點的情況下使乙個單鏈表的所有節點逆序?我們先用迭代迴圈的思想來分析這個...
單鏈表逆序
很經典的 單鏈表逆序 問題。很多公司的面試題庫中都有這道題,有的公司明確題目要求不能使用額外的節點儲存空間,有的沒有明確說明,但是如果面試者使用了額外的節點儲存空間做中轉,會得到乙個比較低的分數。如何在不使用額外儲存節點的情況下使乙個單鏈表的所有節點逆序?我們先用迭代迴圈的思想來分析這個問題,鍊錶的...
單鏈表逆序
2 單鏈表逆序 第二個題目是很經典的 單鏈表逆序 問題。很多公司的面試題庫中都有這道題,有的公司明確題目要求不能使用額外的節點儲存空間,有的沒有明確說明,但是如果面試者使用了額外的節點儲存空間做中轉,會得到乙個比較低的分數。如何在不使用額外儲存節點的情況下使乙個單鏈表的所有節點逆序?我們先用迭代迴圈...