• ベストアンサー

構造体の削除について

C言語にて 構造体をポインタで繋いだ住所録等のサンプルプログラムは、本などで良く見かけますが、データの入力や検索のコードはあるのですが、”データ削除”のコードは載っていません。 データ削除は少し難しくなるのでしょうか? データ削除が載っているサイトや本をご存知の方がみえましたら紹介ください。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#4564
noname#4564
回答No.1
参考URL:
http://www.context.co.jp/~cond/books/algo/mokuji-detailed.html
VitaminBB
質問者

お礼

回答ありがとう御座います。 目次には有りますが、DLしたサンプルコードには ないと思われます。 出来たら削除のサンプルコードが見たいのですが。

その他の回答 (1)

  • hofuhofu
  • ベストアンサー率70% (336/476)
回答No.2

ポインタのリンクの流れから削除したい構造体が外れるようにポインタの参照先を変更して、構造体のメモリを開放するだけでできると思いますが。

参考URL:
http://www.wakhok.ac.jp/~kanayama/C/01/node140.html
VitaminBB
質問者

お礼

回答ありがとう御座います。 特にやり方が判らない訳ではないのですが、 残念ながら当方、経験不足なため出来れば コードの一部でなくちゃんと動く全コードを いじって勉強したいと思いました。 それと疑問の一つとして、データ追加のサンプルは いくらでもあるのに、削除のサンプルはありません。 追加の場合は、データの最後に追加する例が多く、 一方削除の場合は、どうしても途中のデータを削除しないと不自然であり、そうするとコードがやや難しくなるのかな?っと言ったあたりのことを知りたかったのですが。。。

VitaminBB
質問者

補足

ようやく見つけました。 http://www9.plala.or.jp/sgwr-t/c/A/rei15-5.html

関連するQ&A

  • C言語構造体についてです。

    C言語、π=PI 3.14159265で構造体を用いてmensekiを呼び出して 半径と面積を計算して出力するプログラムです。下の空白を埋めてもらえますか? /* 構造体のプログラム */ #include <stdio.h> #include <math.h> #define PI 3.14159265 struct Data { /* 半径rと面積areaをdoubleで宣言 */ }; void menseki(struct ... 構造体のポインタを引数とする ){ /* 面積を計算する際に構造体のアドレスから計算する */ circle->area=PI* .....; } main(){ struct Data example[2]; //構造体配列 int i; /* 半径rを構造体配列を用いて2例入力する */ /* 2例の各々について mensekiを呼び出して 半径と面積を計算して出力する */ } よろしくお願いします。

  • 構造体を値で渡す良い点はありますか?

    C言語で以下のように引数に値を渡す場合とポインタを渡す場合では、 どんなメリットデメリットはあるのでしょうか? 普段はポインタばかり渡していたので、値を渡す経験がなく疑問に思いました。 構造体を値で渡す良い点はありますか? struct sample { int a; int b; }; void test1(struct sample sa){} void test2(struct sample *sa){}

  • テキストデータと構造体。

    テキストデータを構造体に代入し、キャッシュの仕組みの様に見せるプログラムをC言語で作れますか? 教えて下さい。ちょっと緊急です…

  • 構造体の問題で・・・

    どなたか以下のC言語-構造体の問題を教えていただけないでしょうか? 問題 構造体 data_t に年齢[int型]の一つのメンバをもつ構造体 info_t を追加し、以下の関数を使用して、平均年齢を出力するプログラムを作成。 [条件] ・年齢は、input関数を使用し、標準入力で設定するものとする。 ・年齢は1~99までの範囲とし、範囲外の年齢が入力された場合はエラー出力しプログラムを終了する。 ・平均年齢の小数点以下は切り捨てる。 [出力例] 社員番号を入力して下さい-> ★15を入力 氏名を入力して下さい->    ★suzukiを入力 年齢を入力して下さい->    ★28を入力 社員番号を入力して下さい-> ★20を入力 氏名を入力して下さい->    ★satouを入力 年齢を入力して下さい->    ★52を入力 社員番号を入力して下さい-> ★25を入力 氏名を入力して下さい->    ★tanakaを入力 年齢を入力して下さい->    ★17を入力 社員番号   氏名    年齢 15      suzuki    28 20       satou    52 25       tanaka     17 [関数] int avetage(struct data _t*);   意味 : 3人分の平均年齢を計算する関数   引数 : data_t配列ポインタ   戻り値: 平均年齢を返却 void output(struct data_t*,int);   意味 : data_t配列に設定された年齢を含むデータ及び、平均年齢を出力する関数。   引数 : data_t配列ポインタ、平均年齢。 ----------------------------- 問題は以上なのですが、どなたか教えていただけないでしょうか? できれば解説が少しでもあれば助かるのですが(><) よろしくお願いします。

  • すみません。C言語の構造体で簡単なプログラムがあれば教えてください。

    すみません。C言語の構造体で簡単なプログラムがあれば教えてください。

  • リスト構造

    リスト構造がポインタを使って繋ぐ、という事はわかったのですが、例えば電話帳を作るとして、入力、保存、検索、のコマンドを作っても一度プログラムを終了するとデータは消えてしまいますよね?ファイルに保存したとしても、次に見るときにはまた、リスト構造にこれらのデータを戻すのですか?? よくわからないので教えて下さい。お願いします。

  • 構造体の変数をバイナリモードで書き込んだのですが

    C言語初心者です。 以下の様なプログラムで構造体の変数をバイナリモードで書き込んだのですが #include "stdafx.h" struct TBL { char c; int i; }; int _tmain(int argc, _TCHAR* argv[]) { FILE *fp; TBL sample; sample.c = 'A'; sample.i = 'A'; fp = fopen("sample.dat","wb"); fwrite(&sample,sizeof(TBL),1,fp); fclose (fp); return 0; } できた”sample.dat”をダンプしてみると 41 CC CC CC 41 00 00 00 EOF となり char型のデータも4バイトデータを所有しているのですがどうしてでしょうか。

  • Javaには、構造体はないんですか?

     C言語の構造体みたいなのはないんですか? 野球のデータを扱っているのですが、構造体がないのでできません。 打率の順位をソートしたいのですが、Cでは構造体でソートすれば選手名まで全部ソートできたのですが。。。 Javaでは、いちいち選手名、打率などの配列を作っているのですが、打率をソートしてから選手名と一緒に表示しようとしても打率の配列だけ、ソートしてあり選手名の配列と打率の配列があいません。 要するに、打率の配列はソートし、選手の配列はデータを入力したときのままなので、順番が違っているのです。 うまい方法を教えてください。初歩的な質問でごめんなさい。

    • ベストアンサー
    • Java
  • リスト構造について

    C++言語で住所録を作ろうとしていますが、今回始めてポインタを使ったリスト構造を使ってみるこ とにしました。 そこでふと思ったのですが、VBではポインタなど無いと思ったのですが、このような場合はどうやって リスト構造を実現するのですか? VBは昔触ったことが有りますが、今は触っていません。 イメージが分かる程度の回答で結構です。

  • 構造体について

    プログラムを勉強し始めて3日目の初心者なんですが、構造体を使う意味がいまいちよくわかりません。 たとえば、構造体の定義が { 縦の長さ 横の長さ 重さ } だとしたら、それを使うためにも { 縦の長さ= a 横の長さ= b 重さ= c } と同じものを2回書く必要があり、なんだか冗長な感じがしてしまいます。 それとも、定義で決めたデータをわかりやすく、間違えないようにするためですか? 本当に未熟で仕組みや使い方もわからない自分の質問なのですが、答えていただければうれしいです。

専門家に質問してみよう