構造体の挿入と削除

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
mike

構造体の挿入と削除

#1

投稿記事 by mike » 14年前

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, *)が線形リストの末尾要素の場合及び該当する要素が存在しない場合、線形リストに変化を加えない。


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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 構造体の挿入と削除

#2

投稿記事 by softya(ソフト屋) » 14年前

まず、フォーラムルールにあるテンプレートをお使いいただいて記入頂けますか?
http://dixq.net/board/board.html

で、ここは宿題のお手伝いをする掲示板ではありますが、そのものの回答を書く掲示版ではありません。
なので、まずmikeさんが出来るだけやった上でわからない部分をお手伝いするというスタンスになりますのでよろしくお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

non
記事: 1097
登録日時: 14年前

Re: 構造体の挿入と削除

#3

投稿記事 by non » 14年前

1 まず,構造体の宣言を記述してください。
2 リスト構造に番兵があるか,ないか示してください。
3 グローバル変数は使って良いか示してください。

 
non

mike

Re: 構造体の挿入と削除

#4

投稿記事 by mike » 14年前

1
struct st{
int value1;
int value2;
struct st *next;
};


2 ないです。

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

 

アバター
沖 滉均
記事: 237
登録日時: 14年前
住所: K県F市

Re: 構造体の挿入と削除

#5

投稿記事 by 沖 滉均 » 14年前

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言語を理解しているか
 ・ライブラリを使っている場合は何を使っているか
There is no royal road to learning.
codeタグで指定できる言語
画像

box
記事: 2002
登録日時: 14年前

Re: 構造体の挿入と削除

#6

投稿記事 by box » 14年前

線形リストに対する挿入や削除が正しく行なえているかどうかを確認するには、
まず、「線形リストを新規作成する」という処理が必要ですね。このあたりは大丈夫なんでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

閉鎖

“C言語何でも質問掲示板” へ戻る