數(shù)據(jù)結(jié)構(gòu)是這樣的:typedefstructnode{void*data;structnode*next;}node_t;typedefstructlist{node_t*head;}list_t;其中node_t結(jié)構(gòu)是操作封裝的.我想實現(xiàn)一個迭代器函數(shù)intlist_iter(list_t*,void*);當(dāng)循環(huán)達到list結(jié)束的時候返回0,否則返回1也就是我可以這么使用iter:while(list_iter(list,&data)){//dosomething,suchasgetoutdata}我想封裝這個函數(shù),要用到static.但是static修飾的迭代節(jié)點指針不能很好的指示鏈表結(jié)束
2 回答

慕萊塢森
TA貢獻1810條經(jīng)驗 獲得超4個贊
我認為兩個方案1,在list_iter中每讀出一個node銷毀一個,直到某個node->next為null2,擴展list_t,增加一個node_t*c_node。默認同head,每讀一個向下走一個,直到null

繁華開滿天機
TA貢獻1816條經(jīng)驗 獲得超4個贊
intlist_iter(list_t*list,void**data_ptr){staticnode_t*p=NULL;staticintflag=0;if(!flag){//pinittoheadnodewhenthefirsttimep=list->head;flag=1;}if(!p){flag=0;return0;}*data_ptr=p->data;p=p->next;return1;}
添加回答
舉報
0/150
提交
取消