[問題] 鏈表反轉(自己想的一個解法)

作者: kdok123 (小天)   2014-09-22 23:21:03
typedef int elemType;
struct node{
elemType data;
node *next;
};
node *test(node *head, int length)//這裡傳入的head是鏈表的頭指針
{
node *mat = new node[length];
for(int i=0; i<length; i++)
{
mat = head;
if(!head->next)
break;
head= head->next;
mat++;
}
//上面這個for迴圈是想讓new出來的每個指標指向list裡各個node的位置
for(int i=0; i<length; i++)
{
if(i==length-1)
{
mat->next = NULL;
break;
}
mat->next =
作者: PoorLoser (廢文製造機)   2014-09-22 23:46:00
node[length] 怎麼看都不像 pointer array
作者: prismwu   2014-09-22 23:54:00
我猜你mat想宣成pointer array 可是你宣pointer
作者: kdok123 (小天)   2014-09-23 09:09:00
node[length]不是pointer array,是node array沒錯!因為不想宣告double pointer所以才這樣寫這邊是想讓mat的指標指向對的位置,接著在對他改值
作者: bluesoul (忙死你老爸)   2014-09-23 10:15:00
head是用來作什麼呢?mat = head; 這行很奇怪
作者: kdok123 (小天)   2014-09-23 11:25:00
剛剛加入註釋了! head是鏈表的頭指針
作者: PoorLoser (廢文製造機)   2014-09-23 11:56:00
你是不是誤會什麼了, mat = head 不會置換 node[] 基底原本 mat 指向 node[], 你的動作是改成指向 head
作者: kdok123 (小天)   2014-09-23 15:07:00
恩恩! 我知道不會置換node,我只是想讓他指向head並改head的next而已,為什麼這樣會出錯呢?
作者: PoorLoser (廢文製造機)   2014-09-23 15:08:00
那你的 head 基底++ 之後會指到什麼?不過也不用討論這個, array 裡放的非 pointer 要怎麼指
作者: jackylu63 (J)   2014-09-23 16:52:00
我超喜歡用Linux kernel list.h,他是個雙向鏈結X沒有反轉的問題

Links booklink

Contact Us: admin [ a t ] ucptt.com