- 66 名前:25 mailto:sage [2007/12/30(日) 16:14:57 ]
- うぇぇん。やればやるほど分け分かんなくなってきた。
まず、今のやり方で進んでいった場合、 1000 ガンダム 2000 ガンダム3000 ウルトラマンのように、 しょっぱなに消したい文字列がある場合はともかく、 1000 ガンダム 2000 仮面ライダー 3000 仮面ライダー のような場合、非常に大変なんじゃないかという気がしてきた。 typedef struct tagListNode{ struct tagListNode *next; char *data; char *argv; }ListNode; /*first(1000 ガンダム)->(2000 ガンダム)-> (3000 ウルトラマン)-> last(4000 仮面ライダー)というリストが出来た。*/ /*同じ文字を持つペアを(2000 ガンダム)を消したい*/ this = first;/*最初から調べる*/ do{ if(0 == strcmp(this->argv,this->next->argv)){/*今のノードと次のノードの文字列を比較*/ if(this->next->next == NULL)/*今のノードの次の次のノードが無かったら*/ this->next = NULL; else this->next = this->next->next;/*次の次のノードにくっつける(2000 ガンダム)を飛ばす*/ free(this->next); /*(2000 ガンダム)を消す*/ this = first;/*(1000 ガンダム)と(3000 ウルトラマン)比較から始める*/ continue; } else this = this->next; /*文字列のかぶりは無かったので次と比較*/ }while(this == NULL);
|

|