アルゴリズム 線形リスト

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

アルゴリズム 線形リスト

#1

投稿記事 by king » 13年前

線形リストの勉強をしているんですが全く分かりません。
ですが丸投げはダメなのでどのようにかいていったらいいか手順を教えてくれませんか?
次の関数を動かすためにおのおの定義していく問題

void delete( Node *p )
p で指定された要素の次の要素を削除する手続き.

Node* first( Node *head )
head で指定されるリストの最初の要素を指すポインタを返す.リストが空ならば NULL を返す.

Node* last( Node *head )
head で指定されるリストの最後の要素を指すポインタを返す.リストが空ならば NULL を返す.

Node* next( Node *p, Node *head )
p で指定される次の要素を指すポインタを返す.p がリストの最後尾であれば NULL を返すこと

Node* prev( Node *p, Node *head )
head で指されるリスト中の内,p で指定される前の要素を指すポインタを返す. p がリストの先頭であれば NULL を返す.

Node* locate( int i, Node *head )
head で指定されるリストの先頭から i 番目の要素のポインタを返す.存在しない場合は NULL を返す.

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: アルゴリズム 線形リスト

#2

投稿記事 by みけCAT » 13年前

1.開発環境をダウンロードします。http://orwelldevcpp.blogspot.jp/
2.開発環境をインストールします。
3.開発環境を起動します。
4.ファイルを新規作成します。
5.コードを打ち込みます。
6.コードを保存します。
7.コードをコンパイルします。
8.プログラムを実行してテストします。
9.必要に応じてデバッグします。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

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

Re: アルゴリズム 線形リスト

#3

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

線形リストですよね?
1)C言語の関数・ポインタは理解出来ていて、自分でコードが書けるか?
2)線形リストのアルゴリズムは理解できているか?
3)ネット上で検索できる線形リストのソースコードは理解できるか?
この3つについてご自身では、何処で躓いていると思いますでしょうか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: アルゴリズム 線形リスト

#4

投稿記事 by non » 13年前

まず、Nodeの構造体を書いてみてください。
次に、単方向か双方向か、番兵はあるかないかを教えてください。
non

usao

Re: アルゴリズム 線形リスト

#5

投稿記事 by usao » 13年前

(1)~(6)までの関数の型(引数の種類とか個数とか)は
ご自身で決められたのでしょうか,それとも課題とか問題集とかから与えられているものなのでしょうか.

#"リストに要素を追加する" ための関数も欲しいような…?


>どのようにかいていったらいいか
各々の関数の動作確認をするためには,当然,それらの関数に引数として渡す何らかのデータ(リスト)を用意する必要があると思います.
まずは,(1)~(6)の関数云々以前に,リストデータを実際に用意してみるところから始められてはいかがでしょうか.
(必然的に,この段階でNode型の定義とかが定まりますよね.)
 ↓
次に,あるリストの内容(リストが持つ要素群)を任意の時点で確認できないとやはり動作確認できないでしょうから,
リストの内容をprintf()か何かで出力する関数を用意し,前記用意したリストの内容を出力できる ところまでを
コーディングしてみるべきと思います.
 ↓
ここまでができる段階にあれば,(1)~(6)の関数の実装は朝飯前かと思います.

閉鎖

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