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

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

單向鏈表如何實現一個迭代器函數

單向鏈表如何實現一個迭代器函數

慕絲7291255 2019-04-06 08:31:17
數據結構是這樣的:typedefstructnode{void*data;structnode*next;}node_t;typedefstructlist{node_t*head;}list_t;其中node_t結構是操作封裝的.我想實現一個迭代器函數intlist_iter(list_t*,void*);當循環達到list結束的時候返回0,否則返回1也就是我可以這么使用iter:while(list_iter(list,&data)){//dosomething,suchasgetoutdata}我想封裝這個函數,要用到static.但是static修飾的迭代節點指針不能很好的指示鏈表結束
查看完整描述

2 回答

?
慕少森

TA貢獻2019條經驗 獲得超9個贊

我認為兩個方案
1,在list_iter中每讀出一個node銷毀一個,直到某個node->next為null
2,擴展list_t,增加一個node_t*c_node。默認同head,每讀一個向下走一個,直到null
                            
查看完整回答
反對 回復 2019-04-06
?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

intlist_iter(list_t*list,void**data_ptr)
{
staticnode_t*p=NULL;
staticintflag=0;
if(!flag){//pinittoheadnodewhenthefirsttime
p=list->head;
flag=1;
}
if(!p){
flag=0;
return0;
}
*data_ptr=p->data;
p=p->next;
return1;
}
                            
查看完整回答
反對 回復 2019-04-06
  • 2 回答
  • 0 關注
  • 598 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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