単方向線形リストについて教えてください。

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

単方向線形リストについて教えてください。

#1

投稿記事 by 若槻 » 14年前

今、単方向線形リストについてが勉強しています。
空リストを作成する関数を作りたいのですが
プログラミングの書き方がわかりません。
どの関数についても関数の第一引数は struct slist*型

struct cell {
struct cell *next;
int data;
};

struct slist {
struct *head;
};

として
ダミーセルありとダミーセルなしの2つを
作りたいのですがこれもやり方がわかりません ; ;
お願いします。

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

Re: 単方向線形リストについて教えてください。

#2

投稿記事 by non » 14年前

リスト構造などのキーでググってみて、そこに書かれていることで
何がわからないのかを、参考にしたHPのURLとともに記載してください。

勉強が目的なら、自分で調べることはもっとも大事なことです。
non

若槻

Re: 単方向線形リストについて教えてください。

#3

投稿記事 by 若槻 » 14年前

上の条件で「空リストを生成する」関数を作ったのですが

#include<stdio.h>
#include<stdlib.h>
#include<slist.h>

struct cell {
struct cell *next;
int data;
};
struct slist {
struct cell *head;
};

//リスト作成
void creat (int data, cell *p){
p = (cell *)mlloc(sizeof(cell));
p->next = NULL;
p->data = data;

return p;
}


お願いします。

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

Re: 単方向線形リストについて教えてください。

#4

投稿記事 by box » 14年前

若槻 さんが書きました: 上の条件で「空リストを生成する」関数を作ったのですが
上の条件とは、
若槻 さんが書きました: 関数の第一引数は struct slist*型
これのことですか?もしそうだとすると、
若槻 さんが書きました: void creat (int data, cell *p){
明らかに、条件に反していますね。
また、何か自作関数を書いたら、それを動かすためのmain関数もついでに書いてみてはどうでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

若月

Re: 単方向線形リストについて教えてください。

#5

投稿記事 by 若月 » 14年前

返信ありがとうございます。
関数の第一引数は struct slist*型
の意味がわかりません ; ;
勉強不足ですみません

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

Re: 単方向線形リストについて教えてください。

#6

投稿記事 by non » 14年前

若月さんが書いた関数

コード:

void creat (int data, cell *p){
	p = (cell *)mlloc(sizeof(cell));
	p->next = NULL;
	p->data = data;
	return p;
}
これが、エラーになることを、実際に試してみるのが勉強になります。

第一引数の件ですが、この空リストを生成するのにこのstruct slist*型
を使わなくてはいけないのなら、もっと仕様をはっきりすべきです。
例えば、空リストはリストの先頭に追加するとか、最後尾に追加するとか。
ただ単に、空ノードを作るだけなら、struct slist*型を渡す必要は
ありません。課題を出した人に確認してください。
non

閉鎖

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