構造体の挿入と削除
Posted: 2011年6月20日(月) 16:44
c言語でLinux/gccです。
(1,11), (2,22), (3,33), (4,44), (5, 55)
上記のような線形リストがあるとし、(v1, v2)とする。
追加の仕方は、たとえば
(2,22)と(3,33)の間に、(7,77)を挿入したい場合、v1が2である要素を見つけその次に挿入する。
v2は気にしない。
仕様
void insert_st(struct st *s, int pred_v1, int v1, int v2) //挿入
ポインタsから辿れる線形リストの要素(pred_v1, *)の次の位置に、(v1, v2)を挿入する。挿入対象要素の1つ手前の要素を指定するために、insert_st()では、線形リストの先頭に要素を挿入することはできないが気にしない。(pred_v1, *)が複数存在する場合、線形リストを辿って最初に見つけたものとする。(pred_v1, *)に該当する要素が存在しない場合、線形リストに変化を加えないこと。
void delete_st(struct st *s, int pred_v1) //削除
ポインタsから辿れる線形リストの要素(pred_v1, *)の次の要素を削除する。削除対象要素の1つ手前を指定するため、delete_st()では、線形リストの先頭要素を削除することはできないが気にしない。(pred_v1, *)が複数存在する場合、線形リストを辿って最初に見つけたものとする。(pred_v1, *)が線形リストの末尾要素の場合及び該当する要素が存在しない場合、線形リストに変化を加えない。
なにか疑問点があればお答えいたします。
よろしくおねがいします。
(1,11), (2,22), (3,33), (4,44), (5, 55)
上記のような線形リストがあるとし、(v1, v2)とする。
追加の仕方は、たとえば
(2,22)と(3,33)の間に、(7,77)を挿入したい場合、v1が2である要素を見つけその次に挿入する。
v2は気にしない。
仕様
void insert_st(struct st *s, int pred_v1, int v1, int v2) //挿入
ポインタsから辿れる線形リストの要素(pred_v1, *)の次の位置に、(v1, v2)を挿入する。挿入対象要素の1つ手前の要素を指定するために、insert_st()では、線形リストの先頭に要素を挿入することはできないが気にしない。(pred_v1, *)が複数存在する場合、線形リストを辿って最初に見つけたものとする。(pred_v1, *)に該当する要素が存在しない場合、線形リストに変化を加えないこと。
void delete_st(struct st *s, int pred_v1) //削除
ポインタsから辿れる線形リストの要素(pred_v1, *)の次の要素を削除する。削除対象要素の1つ手前を指定するため、delete_st()では、線形リストの先頭要素を削除することはできないが気にしない。(pred_v1, *)が複数存在する場合、線形リストを辿って最初に見つけたものとする。(pred_v1, *)が線形リストの末尾要素の場合及び該当する要素が存在しない場合、線形リストに変化を加えない。
なにか疑問点があればお答えいたします。
よろしくおねがいします。