データベース構造とアルゴリズムが判断するかどうかをリストが空であり、需要鎖長

書式#include <stdio.hに> 
する#include <malloc.hを> 
する#include <stdlib.h>に含ま// 関数宣言 
PNODEのcreate_list(); //は、リストを作成し、戻り値は、ヘッドノードリストのアドレスである、ボイド traverse_list(PNODE PHEAD) ; // リストのトラバースBOOLの is_empty(PNODE PHEADを); // 空気かどうかを決定するint型 length_list(PNODE PHEADが); // リンクされたリストの長さ計算
のtypedef 構造体ノード{
     int型、データ// データフィールド構造体、ノード* pNext // ポインタフィールド     
NODE} * PNODE; // ノード間PNODE同等の構造体へのノード等価*構造体INT メイン(){






    

 
    PNODE PHEAD = NULL; // ノード* PHEAD = NULL構造体に相当する。
    
    PHEAD = create_list(); //は、一本鎖非環式を作成し、PHEADするノードのリストの先頭のアドレスを割り当てる 
    traverse_list(PHEAD)を、// 反復
    IF (is_empty(PHEAD)){ 
        のprintf(" リストが空である" ); 
    } 
    { 
        のprintf(" リスト空でない" ); 
    } 
     
     int型 LEN = length_list(PHEAD); 
     のprintf(" 鎖長Dの%" 、LEN); 
     
    戻り 0 ; 
} 

PNODE create_list(){ 
    int型lenが; // アクティブなノードの数が
    int型、I
     INTヴァル; // ユーザノードの入力値を一時的に記憶
    
    //は、ヘッダーノードが有効なデータ記憶されていない割り当て 
    PNODE PHEAD =(PNODE)はmalloc(はsizeofを(ノード) );
     IF(PHEAD == NULL){ 
        のprintf(" 割り当てが失敗し、プログラムが終了" ); 
        出口( - 1 ); 
    } 
    
     PNODE PTAIL = PHEAD; 
     PTAIL - > pNext = NULL; // もし一つだけのノードは、この時点でテール・ノード・ポインタ・フィールドに空でなければならない 
    のprintf(ノードの数をリストする:); 
    scanfの(%のD 、&; LEN)
    
    のための(I = 0 ; IはLEN <; Iは++ ){ 
        のprintfは(" :%d個のノードの値を入力してください"、私は+ 。1 ); 
        scanfの(" %のD "、およびヴァル); 
        
        PNODE PNEW(= PNODE)はmalloc(はsizeof(ノード)); //は、新しいノードを作成する
             IF(PNEW == NULL){ 
            のprintf(" 割り当てが失敗し、プログラムが終了" ); 
            出口( - 1 ); 
        } 
        PNEW - >データ=ヴァル; / / データをデータフィールドに格納される 
        pTail-> pNext = PNEW。// 新しいノードアドレスがエンドノードポインタフィールドに割り当てられ 
        pNew-> pNext = NULL; // 空の割り当てられた新しいノードポインタフィールド 
        PTAIL = PNEWを; // エンドノードアドレスに新しいノードをコピーする最後のステップ(すなわち、 )テール・ノードになるために新しいノードせ
        // ; pHead-> pNext = PNEW
        // pNew-> pNext = NULL; // 最後のノードのポインタフィールドが空である
    }
     戻りPHEAD; 
} 

ボイドtraverse_list(PNODE PHEAD){ 
    PNODEをP = pHead-> pNext; // リストが空の場合、ヘッドノードポインタフィールドが空である場合、pが空である
    
    一方、(P!= NULL){ 
        のprintf(" %のD "、P-> データ)。
        P = P->pNext;  
    }
    のprintf(" \ N- " );
     リターン; 
} 

BOOLのis_empty(PNODE PHEAD){
     IF(pHead-> pNext == NULL){ // ポインタフィールド・ヘッダ・ノードが空の場合、リストが空である
        リターン trueに
    } 
    {
         リターン はfalse ; 
    } 
} 

int型length_list(PNODE PHEAD){ 
     PNODE P = pHead-> pNext;
      INT LEN = 0 ;
      ながら(!P = NULL){ 
         lenを ++ ; 
         P = P->pNext; 
     } 
}

 

おすすめ

転載: www.cnblogs.com/sunbr/p/11319881.html