単一のリストと実装2019年7月29日の設立

  1つの#include <iostreamの>
   2の#include <cstdlib>
   。3  
  。4  使用して 名前空間STD;
   5  
  。6  構造体ノード{
   7。     int型のデータ、
   8      ノード* 次に、
   9  };
 10  
。11  構造体ノードヘッド* = NULL;
 12は 
13である / * ため単一リンクリスト内のすべてのデータを破壊する* / 
14  無効DestoryList()
 15  {
 16      頭= ; NULL
 17。      COUT << " Destiryedリストの!" <<ENDL;
 18である      出口( - 1 );
 19  }
 20  / * 単独でリンクされたリストデータを除去する* / 
21である ボイドClearList()
 22は 、{
 23が      ヘッド= NULL;
 24      COUT << " クリア今!" << ENDL;
 25  }
 26  / *は、単一リンクされたリストが空であると判断/ * 
27  BOOL ListEmpty()
 28  {
 29      のiF(ヘッド== NULL){
 30          COUTが<< " リストが空である" << ENDL。
31で         返す trueに;
 32      }
 33は、     戻り falseに34である }
 35  / * 単一のリストを出力するための長さ* / 
36  INT LISTLENGTH()を
 37 [  {
 38は     IF(ヘッド== NULL){
 39          リターン 0 ;
 40      }
 41が     {
 42であります         INT I = 0 43である          ノード* P;
 44である          P = ヘッドは、
 45          ながら(P){
 46であります             ++ I 47              P = P-> 次に;
 48          }
 49          リターンがI;
 50      }
 51である }
 52は、 / * i番目の要素を見つけるため、その値を返し* / 
53である INT getElem(INT I)
 54は 、{
 55      IF(Iを<= 0 ){
 56は          COUT << " 入力エラー" << ; ENDL
 57である          出口( - 1 );
 58      }
 59      INT J = 1。;
60      であれば(ListEmpty()){
 61          COUT << " リストが空です" 62          出口( - 1 )。
63      }
 64      ノード*のP。
65      、P = ヘッド。
66      ながら(!J =私は&& p)を{
 67          、P = P-> 次。
68          J ++ ;
69      }
 70      であれば(p == NULL){
 71          出口( - 1 )。
72      }
 73      {
 74         戻り P-> データ;
 75      }
 76  }
 77  
78  / * リストに新しい要素を追加する* / 
79  空隙 ADDLIST(ノード* A)
 80  {
 81      IF(ヘッド== NULL){
 82          ヘッド= A、
 83          A - >次に= NULL;
 84      }
 85      {
 86          ノード* P、
 87          P = ヘッド;
 88          ながら(P){
 89              IF(P->次に== NULL){
 90                 P->次に= A;
 91である                  A->次に= NULL;
 92                  BREAK ;
 93              }
 94              P = P-> 次に;
 95          }
 96      }
 97  }
 98  / * リストを出力するためのすべての要素* / 
99  ボイドがprintlist( )
 100  {
 101      ノード* P、
 102      P = ヘッド;
 103      INT J = 0 ;
 104      ながら(P){
 105          COUTのP - <<> <<データENDL;
 106          J ++ ;
 107          P = P-> 次に;
 108      }
 109      COUT << " このリストは持っている" << << J " 番号を" ;
 110  }
 111  / * 最初の数は、単一のリンクリストに戻される関係を満たします位置* / 
112  INT LocateElem(int型 E、チャーC)
 113  {
 114     IF(C == ' = ' ){
 115      IF (ListEmpty()){
 1 16          出口( - 1 );
117      }
 118      INT i = 1 119      ノード*のP。
120      P = ヘッド。
121      一方、(P){
 122          であれば(P->データ== e)の{
 123              リターンI。
124          }
 125          I ++は126          P = P-> 次。
127       }
 128     }
 129  }
 130  INT メイン()
 131  {
 132      ノード* 133      のためのINTI = 1 ; I < 19 ; I ++ ){
 134      = 新しいノード。
135      A->データ= 私は、
136      ADDLIST(A)。
137      }
 138      COUT << GetElem(18 )。
139  / * エラー発見するために* / 
140  //     ノード* pを。
141  //     P =ヘッド。
142  //     一方(P){
 143  //         COUT << P->データ<< ENDL。
144  //         P = P->次。
145  //     } 
146  / *  ENG * / 
147  
148 }

  単一リンクリストを作成する場合、新しいノードを作成し、新規またはmallocの機能を使用することができるが、新しい非主要機能malloc関数で使用することができません。それは新しいアドレスを生成しませんので、接続のみがカバーするノードを作成するために、同じ記憶領域を持って使用されますが、実際に作成していないので、彼らが望んでいたときの注意の単一のリストを作成します。

おすすめ

転載: www.cnblogs.com/wan123/p/11265165.html