[問題] pop stack的一個問題
想請問一個問題
現在我想用linked list寫一個pop
struc node
{
int data;
struct node *next;
}
typedef struct node *nodepointer;
void pop(nodepointer root)
{
if (root->next==NULL)
printf("No element to pop\n");
else
{
nodepointer temp;
temp=(nodepointer)malloc(sizeof(nodepointer));
temp=root->next;
root->next=temp->next;
free(temp);
}
想問的是 我為何不行改成這樣
else
{
root->next=NULL;
}
直接把root之後的東西砍掉 達成pop的效果
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.218.97
→
10/23 22:39, , 1F
10/23 22:39, 1F
推
10/23 22:41, , 2F
10/23 22:41, 2F
→
10/23 22:42, , 3F
10/23 22:42, 3F
喔喔 是因為我沒有釋放掉被推出來的那個list嗎?
→
10/23 22:43, , 4F
10/23 22:43, 4F
→
10/23 22:43, , 5F
10/23 22:43, 5F
可是這樣要怎麼知道我要刪除哪個
free(root->next) 這樣有辦法嗎?
※ 編輯: famayo 來自: 140.112.218.97 (10/23 22:46)
推
10/23 22:52, , 6F
10/23 22:52, 6F
→
10/23 22:52, , 7F
10/23 22:52, 7F
→
10/23 22:52, , 8F
10/23 22:52, 8F
→
10/23 22:53, , 9F
10/23 22:53, 9F
→
10/23 22:56, , 10F
10/23 22:56, 10F
→
10/23 22:57, , 11F
10/23 22:57, 11F
→
10/23 22:57, , 12F
10/23 22:57, 12F
上面那個寫法是在砍root之上的那個list不是嗎?
root一開始就確定他的next不只向NULL了 所以他肯定不會上最上層不是嗎@@?
※ 編輯: famayo 來自: 140.112.218.97 (10/23 23:00)
→
10/23 23:04, , 13F
10/23 23:04, 13F
→
10/23 23:10, , 14F
10/23 23:10, 14F
→
10/23 23:14, , 15F
10/23 23:14, 15F
→
10/23 23:15, , 16F
10/23 23:15, 16F
→
10/23 23:16, , 17F
10/23 23:16, 17F
→
10/23 23:17, , 18F
10/23 23:17, 18F
→
10/23 23:22, , 19F
10/23 23:22, 19F
→
10/23 23:22, , 20F
10/23 23:22, 20F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章