亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我想封裝這個函數, 要用到static .但是static修飾的迭代節點指針不能很好的指示鏈表結束

我想封裝這個函數, 要用到static .但是static修飾的迭代節點指針不能很好的指示鏈表結束

C
HUX布斯 2023-04-14 22:18:38
數據結構是這樣的:typedef struct node {void *data;struct node *next; } node_t;typedef struct list {node_t *head; } list_t;其中node_t 結構是操作封裝的.我想實現一個迭代器函數int list_iter(list_t *,void *);當循環達到list結束的時候返回0,否則返回1也就是我可以這么使用iter:while(list_iter(list,&data)){    //do something,such as get out data}
查看完整描述

2 回答

?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

我認為兩個方案
1,在list_iter中每讀出一個node銷毀一個,直到某個node->next為null
2,擴展list_t,增加一個node_t *c_node。默認同head,每讀一個向下走一個,直到null

查看完整回答
反對 回復 2023-04-18
?
MYYA

TA貢獻1868條經驗 獲得超4個贊

int list_iter(list_t *list, void **data_ptr){static node_t *p = NULL;static int flag = 0;if (!flag){ //p init to head node when the first timep = list->head;
flag = 1;
}if (!p){
flag = 0;return 0;
}
*data_ptr = p->data;
p = p->next;return 1;
}


查看完整回答
反對 回復 2023-04-18
  • 2 回答
  • 0 關注
  • 181 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號