質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

4564閲覧

C言語でList型を作成出来ますか?

ame_chan

総合スコア35

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2016/07/21 09:59

C言語でなんでも入るlist型を作りたいです。
int char longくらいなら、共用体を使えばいけそうなのですが、文字列のような配列も入れたいとなると、どうすれば実装できるでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

文字列などは、その文字列を指すポインタを格納すればよいと思います。そうなると、入っているデータがどのような型なのか、という情報をどこかに持つ必要があるかもしれません(ユーザ任せにしないならば)。そうでないと、取り出す時にポインタと数値の区別がつかなくなります。

投稿2016/07/21 10:27

yoshi777

総合スコア674

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ame_chan

2016/07/21 13:56

ご返事ありがとうございます。型をユーザー側で指定すればいいよですね。試してみます。
guest

0

ベストアンサー

リストを作るであれば、共用体を持った構造体をリスト構造で実装すれば行けると思います。

c

1struct list{ 2 struct list *next; // 次の要素 3 int type; // 格納してあるデータのタイプ 4 union{ 5 ・・・ 6 } 7} 8

確認はしていませんが、こんな感じになると思います。
・・・cでのリストの生成、挿入、削除などは検索すればいろいろ見つかると思います。
参考:データ構造(10)~構造体をポインタでつなぐ
他の方も書かれていますが、確保したメモリは確実に開放してください。見落とすとメモリリークになります。

投稿2016/07/21 12:46

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ame_chan

2016/07/21 13:54

ご返事ありがとうございます。 javaのLinkedListのようなやつですね。できれば、ArrayList(可変配列)を作りたいので、可変配列を作った後に試してみたいと思います。 共用体では配列を入れることができません。それはどのように回避すればいいでしょう?
cateye

2016/07/21 20:39

配列も文字列と同様にmalloc()などで確保してポインタを持たせましょう。
guest

0

int ができるなら、それをポインタに変えれば文字列のものが完成するのではないですか?
int で作ったもののソースを掲載してみてください。

投稿2016/07/21 10:04

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ame_chan

2016/07/21 10:11

ご回答ありがとうございます。 まだ、intさえも実装はしてません。 閃きました。 全てポインタでやればいいんですね。
Zuishin

2016/07/21 10:14

そうですね。ただ、リストから削除する時やリストを廃棄する時にノードだけでなく文字列のメモリもきっちり解放しないとメモリリークが起きますのでお気を付けて。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問