在實際應用中,經常需要用到逆序儲存。而當使用鍊錶時,逆序儲存的優勢更加突出,在這裡,我將實現單鏈表的逆序儲存,並且還將實現順序儲存,用以比較。
**部分:
//逆序儲存
#include
#include
struct list ;
struct list * creatlist1(int n);
void print(struct list *l,int n);//列印
int main()
//逆序儲存的鍊錶
/*例如輸入12345
輸出54321
*/struct list * creatlist1(int n)
l->next=null;//建立乙個帶有頭節點的鍊錶
for (i=n;i>0;i--)
scanf("%d",&p->data);
p->next=l->next;//將每乙個新節點,插入在頭節點之後
l->next=p;
}return l;
}void print(struct list *l,int n)
}
//順序儲存
#include
#include
struct list ;
void print(struct list *l,int n);//列印
struct list *creatlist2(int n);
int main()
//按順序儲存
//例如 輸入12345 輸出12345
struct list *creatlist2(int n)
l->next=null;
t=l;
for (i=0;istruct list *)malloc(sizeof(struct list ));
if (p==null)//記憶體分配失敗
ps:**中沒有加相應提示,可讀性教差,見諒!!
通過比較不難看出,所謂的逆序儲存,就是將每一次建立的新節點插入在頭節點之後。
單鏈表逆序
include include typedef struct student student typedef struct list list,list list createlist void paixu list l 比較笨拙的一種方法 list reverse list l int main ...
單鏈表逆序
第二個題目是很經典的 單鏈表逆序 問題。很多公司的面試題庫中都有這道題,有的公司明確題目要求不能使用額外的節點儲存空間,有的沒有明確說明,但是如果面試者使用了額外的節點儲存空間做中轉,會得到乙個比較低的分數。如何在不使用額外儲存節點的情況下使乙個單鏈表的所有節點逆序?我們先用迭代迴圈的思想來分析這個...
單鏈表逆序
很經典的 單鏈表逆序 問題。很多公司的面試題庫中都有這道題,有的公司明確題目要求不能使用額外的節點儲存空間,有的沒有明確說明,但是如果面試者使用了額外的節點儲存空間做中轉,會得到乙個比較低的分數。如何在不使用額外儲存節點的情況下使乙個單鏈表的所有節點逆序?我們先用迭代迴圈的思想來分析這個問題,鍊錶的...