先頭ノードチェーンテーブルの基本操作C/C+(ヘッドプラグ、テールプラグ、印刷、検索、挿入、削除)

29221 ワード

先頭ノードチェーンテーブルの基本操作C/C++
  • 先頭ノードチェーンテーブルの基本動作
  • テスト結果
  • 先頭ノードチェーンテーブルの基本操作
    /**
     *           
     */
    #include 
    #include 
    
    /**
     *     
     */
    typedef struct LNode{   //         
        int data;           //   
        struct LNode *next; //   
    }LNode,*LinkList;  //  
    
    /**
     *        -   (           )
     */
    void printDataAndLength(LinkList L){
        int length = 0;
        while(L != NULL){
            printf("    - %d 
    "
    ,L->data); L= L->next; length ++; } printf(" ( )- %d
    "
    ,length-1); } /** * */ LinkList List_HeadInsert(LinkList &L){ // LNode *s; int x; L=(LinkList)malloc(sizeof(LNode)); // L->data = 0; // data 0 L->next = NULL; // printf(" :
    "
    ); scanf("%d",&x); while (x!=9999){ s=(LNode*)malloc(sizeof(LNode)); // s->data = x; // s->next = L->next; // null L->next = s; // scanf("%d",&x); } return L; } /** * */ LinkList List_TailInsert(LinkList &L){ // LNode *s,*r; int x; L=(LinkList)malloc(sizeof(LNode)); // L->data = 0; // data 0 L->next = NULL; // r = L; // printf(" :
    "
    ); scanf("%d",&x); while (x!=9999){ s=(LNode*)malloc(sizeof(LNode)); // s->data = x; // r->next = s; // r = s; // scanf("%d",&x); } r->next = NULL; // NULL return L; } /** * * @return */ LNode * getElem(LinkList L,int i){ int j = 0; LNode *s = L; if(i == 0){ return L; } if(i < 1 || j > i){ // i return NULL; } while(j<i){ s = s->next; // j++; } return s; } /** * * @return */ LNode * locateElem(LinkList L,int value){ LNode *s = L; while(s->data != value){ s = s->next; // } return s; } /** * i * @return */ void insertByLocate(LinkList &L,int i){ int x,j=0; LNode * s = getElem(L,i-1); // LNode * newNode = (LNode *)malloc(sizeof(LNode)); printf(" :"); scanf("%d",&x); newNode->data = x; // newNode->next = s->next; // s->next = newNode; } /** * i * @return */ void delNode(LinkList &L,int i){ int j=0; LNode *s = getElem(L,i-1); // i LNode *delNode = s->next; // s->next = delNode->next; free(delNode); // } int main(){ LinkList L; printf("---------- ------------
    "
    ); // //L = List_HeadInsert(L); // L = List_TailInsert(L); // printf("---------- -------------
    "
    ); printDataAndLength(L); // printf("---------- -------------
    "
    ); LNode * node = getElem(L, 3); printf(" %d
    "
    ,node->data); // printf("---------- -------------
    "
    ); LNode * lNode = locateElem(L,4); printf(" %d
    "
    ,lNode->data); printf("---------- -------------
    "
    ); // i insertByLocate(L,4); printDataAndLength(L); // i printf("---------- -------------
    "
    ); delNode(L,4); printDataAndLength(L); return 0; }

    テスト結果の表示
    ----------  ------------1
    2
    3
    4
    5
    6
    7
    8
    9999
    ----------  -------------
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
         (      )- 8
    ----------     -------------
              3
    ----------    -------------
             4
    ----------  -------------10
        - 0
        - 1
        - 2
        - 3
        - 10
        - 4
        - 5
        - 6
        - 7
        - 8
         (      )- 9
    ----------  -------------
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
         (      )- 8