對於單鏈表的逆置有兩種方法可以實現:
(1)利用輔助指標
基本思想:在遍歷結點過程中,設定輔助指標,用於記錄先前遍歷的結點。這樣依次編譯的過程中只需修改其後繼結點的next域即可。
實現**:
[cpp]
view plain
copy
?
typedef
int datatype; //型別定義
typedef
struct nodelinkednode,*linklist;
void reverselist(linklist& listhead)
listhead->next=null;
listhead=ppre; //記錄下新的頭結點
}
typedef int datatype; //型別定義
typedef struct nodelinkednode,*linklist;
void reverselist(linklist& listhead)
listhead->next=null;
listhead=ppre; //記錄下新的頭結點
}
示意圖:
(2)遞迴
基本思想:在對當前結點逆置時,先遞迴地逆置其後繼結點,然後將後繼結點指向當前結點。
實現**:
寫了兩個版本
i、返回值為空[cpp]
view plain
copy
?void reverselist(linkednode* pcur,linklist& listhead)
else
}
void reverselist(linkednode* pcur,linklist& listhead)
else }
ii、返回值為結點型別[cpp]
view plain
copy
?linkednode* reverselist(linkednode* pcur,linklist& listhead)
else
}
linkednode* reverselist(linkednode* pcur,linklist& listhead)
else }
示意圖:
下面給出完整的程式:
[cpp]
view plain
copy
?
#include
using
namespace std;
const
int n=6;
typedef
int datatype;//型別定義
typedef
struct nodelinkednode,*linklist;
/****由陣列建立單鏈表****/
linklist createlist(datatype a[n])
return listhead;
} /****輸出單鏈表****/
void printlist(linklist listhead)
cout
} void reverselist(linkednode* pcur,linklist& listhead)
else
} int main()
;
linkednode* list=createlist(a);
printlist(list);
linkednode*ptemp=list;
reverselist(ptemp,list);
printlist(list);
return 0;
}
單鏈表逆置實現(C )
對於單鏈表的逆置有兩種方法可以實現 1 利用輔助指標實現 基本思想 在遍歷結點的過程中,設定輔助指標,用於記錄先前遍歷的結點。這樣依次遍歷的過程中只需修改其後繼結點的next域即可。實現 如下 typedef int datatype 型別定義 typedef struct nodelinkedno...
單鏈表的逆置 C 實現
文章出自 對於單鏈表的逆置有兩種方法可以實現 1 利用輔助指標 基本思想 在遍歷結點過程中,設定輔助指標,用於記錄先前遍歷的結點。這樣依次編譯的過程中只需修改其後繼結點的next域即可。實現 cpp view plain copy print?typedef intdatatype 型別定義 typ...
單鏈表的逆置 C 實現
對於單鏈表的逆置有兩種方法可以實現 1 利用輔助指標 基本思想 在遍歷結點過程中,設定輔助指標,用於記錄先前遍歷的結點。這樣依次編譯的過程中只需修改其後繼結點的next域即可。實現 cpp view plain copy print?typedef intdatatype 型別定義 typedef ...