[問題] 鏈表反轉(自己想的一個解法)
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 = --mat;
}
//這邊就是要鏈表反轉了,把一個指標指向的node往前一個指標的位置指
delete [] mat;//這邊爆掉了
return head;
}
兩個問題:
1.我有試著把mat的值給印出來,發現不太對,為什麼呢? (我跟蹤code確定在第一個
迴圈裡他們有存進去,可是在--mat的時候值不對)
2.delete為什麼爆掉呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1411399266.A.DFB.html
※ 編輯: kdok123 (140.112.25.105), 09/22/2014 23:22:46
→
09/22 23:46, , 1F
09/22 23:46, 1F
→
09/22 23:54, , 2F
09/22 23:54, 2F
→
09/23 09:09, , 3F
09/23 09:09, 3F
→
09/23 09:10, , 4F
09/23 09:10, 4F
→
09/23 09:11, , 5F
09/23 09:11, 5F
→
09/23 10:15, , 6F
09/23 10:15, 6F
→
09/23 10:17, , 7F
09/23 10:17, 7F
※ 編輯: kdok123 (140.112.25.105), 09/23/2014 11:24:32
→
09/23 11:25, , 8F
09/23 11:25, 8F
→
09/23 11:56, , 9F
09/23 11:56, 9F
→
09/23 11:58, , 10F
09/23 11:58, 10F
→
09/23 15:07, , 11F
09/23 15:07, 11F
→
09/23 15:07, , 12F
09/23 15:07, 12F
→
09/23 15:08, , 13F
09/23 15:08, 13F
→
09/23 15:18, , 14F
09/23 15:18, 14F
→
09/23 16:52, , 15F
09/23 16:52, 15F
→
09/23 16:54, , 16F
09/23 16:54, 16F