リストの実装

最近期間の終了、時間は貴重なああです!数が高い私のゴブリンを着用している~~~

リストを学んだが、前に認識していなかったの前に、最近の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(リスト、67 )。
95      changevalue(リスト、68 )。
96      delete_element(リスト3 )。
97      delete_element(リスト9 )。
98      showlinklist(リスト)。
99     freelinklist(リスト);
100      リターン 0 ;
101 }

おすすめ

転載: www.cnblogs.com/baizijianyidi/p/12105291.html