ページ 11

構造体の挿入と削除

Posted: 2011年6月20日(月) 16:44
by mike
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, *)が線形リストの末尾要素の場合及び該当する要素が存在しない場合、線形リストに変化を加えない。


なにか疑問点があればお答えいたします。
よろしくおねがいします。

Re: 構造体の挿入と削除

Posted: 2011年6月20日(月) 16:57
by softya(ソフト屋)
まず、フォーラムルールにあるテンプレートをお使いいただいて記入頂けますか?
http://dixq.net/board/board.html

で、ここは宿題のお手伝いをする掲示板ではありますが、そのものの回答を書く掲示版ではありません。
なので、まずmikeさんが出来るだけやった上でわからない部分をお手伝いするというスタンスになりますのでよろしくお願いします。

Re: 構造体の挿入と削除

Posted: 2011年6月20日(月) 17:09
by non
1 まず,構造体の宣言を記述してください。
2 リスト構造に番兵があるか,ないか示してください。
3 グローバル変数は使って良いか示してください。

 

Re: 構造体の挿入と削除

Posted: 2011年6月20日(月) 18:20
by mike
1
struct st{
int value1;
int value2;
struct st *next;
};


2 ないです。

3 グローバル変数は使わない方向でお願いします。
non さんが書きました:1 まず,構造体の宣言を記述してください。
2 リスト構造に番兵があるか,ないか示してください。
3 グローバル変数は使って良いか示してください。

 

Re: 構造体の挿入と削除

Posted: 2011年6月20日(月) 18:46
by 沖 滉均
mikeさん
nonさんにしか返答していませんが、softyaさんの回答も確認されましたか?

フォーラムルールとして課題の丸投げは禁止されており、作成されたコードがあればそちらに対して
解決に至るアドバイスをさせていただくといった形になります。
もし、何か問題(不明点など)があってコードが作成できないのであれば、何が分からなくて書くことが
できないのかを明記した方が皆さんからアドバイスいただけると思いますよ。

以下、参考までにフォーラムルールのテンプレートです

コード:

[1] 質問文
 [1.1] 自分が今行いたい事は何か
 [1.2] どのように取り組んだか(プログラムコードがある場合記載)
 [1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
 [1.4] 今何がわからないのか、知りたいのか
      
[2] 環境  
 [2.1] OS : Windows, Linux等々
 [2.2] コンパイラ名 : VC++ 2008EE, Borand C++, gcc等々

[3] その他 
 ・どの程度C言語を理解しているか
 ・ライブラリを使っている場合は何を使っているか

Re: 構造体の挿入と削除

Posted: 2011年6月20日(月) 21:30
by box
線形リストに対する挿入や削除が正しく行なえているかどうかを確認するには、
まず、「線形リストを新規作成する」という処理が必要ですね。このあたりは大丈夫なんでしょうか。