最近期間の終了、時間は貴重なああです!!!数が高い私のゴブリンを着用している~~~
リストを学んだが、前に認識していなかったの前に、最近のC言語のクラスは、私は少しを実現して、リストを伝えるようになりました。
そう、前提は、私の心の中で、リスト構造体であるリストは、ネストされた構造であり、ポインタフィールドが開いているため、データドメインとターゲットドメインで構成されている私たちが始めた、最も基本的なデータ構造の一つであります配列の欠点よりもリストにはスペースの消費量です。
以下は、書く時間を見つけるために、二重リンクリストの終了後に、単独リンクリストの実装コードです。
最近のコンパイラたとき、私のデバッグ出力文の兆候である、まず、あまりにも、実際にはC、C ++で書かれた悪いIの演劇、です。
1の#include <stdio.hの> 2の#include <STDLIB.H> 3 4のtypedef 構造体ノード{ 5つの INT データ。 6 構造体の次のノード*。// C ++可以不加構造体 7 }ノード。 8 9ノード* initlist(INT NUM){ 10 ノード*ヘッド= NULL; 11 ヘッド=(ノード*)はmalloc(はsizeof(構造体ノード))。 12 頭部>データ= NUM。 13 頭部>次= NULL; 14 printf(" INITリンクリストOK \ nは!" ); 15 リターンヘッド; 16 } 17 18 19 ボイドはaddElement(ノード・リスト、int型NUM){ 20 ノード* Tpreの= リスト。 21 一方(tpre->次!= NULL) 22 Tpreの= tpre-> 次。 23 tpre->次=(ノード*)はmalloc(はsizeof(構造体ノード))。 24 Tpreの= tpre-> 次。 25 tpre->データ= NUM。 26 tpre->次= NULL; 27 のprintf(" NUMを追加します!%d個のOKを\ n個" 、NUM); 28 リターン; 29 } 30 31 空隙 delete_element(ノード・リスト、int型NUM){ 32 ノード* Tpreの= NULL; 33 * TNOW =ノードリスト。 34 ながら(!TNOW = NULL){ 35 であれば(tnow->データ== NUM){ 36 ノード* TEMP = TNOW。 37 TNOW = tnow-> 次。 38 フリー(TEMP)。 39 tpre->次= TNOW。 40 のprintf(" 削除%d個のOK \ nは!" 、NUM); 41 リターン; 42 } 43 Tpreの= TNOW。 44 TNOW = tnow-> 次。 45 } 46 のprintf(" DELデータ:%D Erorr \ n " 、NUM)。 47 リターン; 48 } 49 50 空隙 changevalue(ノード・リスト、INT NUM、INT CNUM){ 51 ノード* tnext = リスト。 52 一方(tnext!= NULL){ 53 であれば(tnext->データ== NUM){ 54 tnext->データ= CNUM。 55 のprintf(" 変更データ:!%dと%D OK \ N " 、NUM、CNUM)。 56 リターン; 57 } 58 tnext = tnext-> 次。 59 } 60 のprintf(" CHAデータ:!%dと%D Erorr \ N " 、NUM、CNUM)。 61 リターン; 62 } 63 64 ボイド freelinklist(ノード・リスト){ 65 ノード* TRE = リスト。 66 ノード* tnext =リスト- > 次。 67 ながら(!tnext = NULL){ 68 tnext = tnext-> 次。 69 無料(TRE)。 70 TRE = tnext。 71 } 72 のprintf(" FREE OK \ nは!" ); 73 リターン; 74 } 75 76 空隙 showlinklist(ノード・リスト){ 77 ノード* Tpreの= リスト。 78 一方(tpre->次!= NULL){ 79 のprintf(" %d個"、tpre-> データ)。 80 Tpreの= tpre-> 次。 81 } 82 のprintf(" %Dの#\ n "、tpre-> データ)。 83 のprintf(" 表示-Finish]を\ nは!" ); 84 リターン; 85 } 86 87 、INT (){主 88 ノード・リスト= initlist(1 )。 89 はaddElement(リスト2 )。 90 はaddElement(リスト3 )。 91 はaddElement(リスト4 )。 92 はaddElement(リスト5 )。 93 はaddElement(リスト、6 )。 94 changevalue(リスト、6、7 )。 95 changevalue(リスト、6、8 )。 96 delete_element(リスト3 )。 97 delete_element(リスト9 )。 98 showlinklist(リスト)。 99 freelinklist(リスト); 100 リターン 0 ; 101 }