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

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

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

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

Q&A

解決済

2回答

1466閲覧

リストの削除をしたい。

txty

総合スコア303

C

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

0グッド

0クリップ

投稿2021/02/21 05:12

編集2021/02/21 05:15

https://teratail.com/questions/302113
は何回も読み返してリストを追加しているのだと思ったのですがリストの削除も出来るのでしょうか。もし出来るようならurlのような、コードをよろしくお願いしたいです

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

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

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

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

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

dodox86

2021/02/21 05:27

そういうものは基本的に参考にしたコードの内容を理解した上て、自力で追加で実装するものではないでしょうか。
hoshi-takanori

2021/02/21 05:45

top=top->next; で先頭ノードを取り除いています。(free してないから削除してるとは言わないかも…。)
txty

2024/01/02 03:34 編集

dodox86さん> 理解できそうなのがないです。 hoshi-takanoriさん> コメントありがとうございます。freeで調べてみます。
guest

回答2

0

削除するようなコードをあなたが書けば、削除できるようになりますね

投稿2021/02/21 07:29

y_waiwai

総合スコア88042

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

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

txty

2021/02/21 08:33

書けないのです。すいません。
y_waiwai

2021/02/21 08:41

C言語の標準関数では基本的なものしかなんで、他の言語のようにリスト操作やらなんやら便利なようにはできていません。 なので、全て自前で用意する必要があります そこらへん、便利にいろいろ使いたいと言うなら、C言語ってのはあんまし向いてないですね
txty

2021/02/21 08:48

2分木までやりたいですけどc言語できる人はうらやましいですね
guest

0

ベストアンサー

削除したいノードのひとつ前のノード->next = 削除したいノード->next

しなきゃいかんので、まずは 「削除したいノードのひとつ前のノード」
つまり X->next == 削除したいノード である X を見つけることになります。

投稿2021/02/21 07:12

episteme

総合スコア16612

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

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

txty

2021/02/21 07:28

検索というのが先にできなきゃ駄目ということでしょうか それとも消したいnodeがわかれば好きなところを消せるのでしょうか?例えば3番目をけすときとかはどうなりますか
episteme

2021/02/21 07:32 編集

回答のとおり、消したいnodeのひとつ手前のnodeがわかればいい。 例えば3番目をけすときは2番目のnodeのnextを書き換えればいい。
txty

2021/02/21 07:42

すいません。初めに書き換えをしてみたいですが、書き換え(代入)とfree(消去)は違いますでしょうか。
txty

2021/02/21 07:52 編集

文字どおり違うのか、やり方がちがうのか教えてください。
episteme

2021/02/21 07:52 編集

戸籍から抹消(書き換え)したからって本人が死ぬ(消去)わけじゃありませんよね。 逆もしかり、死んでも戸籍は生きています(書き換えない限り)
episteme

2021/02/21 07:54

X->next = ほかのなにか; // 書き換え free(X->next); // 消去(てゆーか、システムに返却)
txty

2021/02/21 08:02

分かりやすかったです。最後に書き換えの方のサンプルコード貰えないでしょうか。簡単なやつで。それで質問を終わりにしたいです。
txty

2021/02/21 08:04

行き違いましたが書き換えはほしいです
txty

2021/02/21 08:18 編集

他の何かに入るのはアドレスでしょうか?アドレスだとすると、とばされたノードはメモリに のこりますか
episteme

2021/02/21 08:46

> 削除したいノードのひとつ前のノード->next = 削除したいノード->next って答えたやん。
txty

2021/02/21 08:50

あっはい。詳しくしりたかったので聞きました。
episteme

2021/02/21 08:53 編集

詳しくとは? これ以上詳しくはならん。 > 他の何かに入るのはアドレスでしょうか? アドレスじゃなかったら何なんだ? > アドレスだとすると、とばされたノードはメモリにのこりますか 消去と書き換えは違うって答えた。
txty

2021/02/21 09:06 編集

ありがとうございました。この前のサンプルをそこだけ書き換えれば出来るのかなと思いました。
episteme

2021/02/21 10:29

先頭要素を削除するときは 「ひとつ前のノード」が存在しないので注意。
txty

2021/02/21 11:15

どうもです。分かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問