日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

list

 海漩渦 2016-07-24

====================================================================

// list.h
#ifndef _SIGNAL_LIST_H_
#define _SIGNAL_LIST_H_

#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;

typedef struct Node{
    ElemType E;
    int key;
    struct Node *next;
}LNode;

int SignalListInit(LNode *L);

int AddElem(LNode *L, int key, ElemType *E);

int FindElem(LNode *L,  int key, ElemType *E);

int DelElem(LNode *L,  int key);

int ChangeElem(LNode *L, int key, ElemType *E);

int ShowAllElem(LNode *L);

int ClearList(LNode *L);

#endif


===================================================================


//  list.c
#include "signal_list.h"

int SignalListInit(LNode *L)
{
    L->E = 0;
    L->key = -1;    // key大于0
    L->next = NULL;
}

int AddElem(LNode *L, int key, ElemType *E)
{
    if(NULL == L || NULL == E)
    {
        printf("AddElem error\n");
        return -1;
    }

    LNode *tmp_L = (LNode *)malloc(sizeof(LNode));
    tmp_L->E = *E;
    tmp_L->key = key;
    tmp_L->next = L->next;
    L->next = tmp_L;    // 頭插法
    return 0;
}

// 查找第一個(gè)key的元素E
int FindElem(LNode *L,  int key, ElemType *E)
{
    if(NULL == L || NULL == E || NULL == L->next)
    {
        printf("find error\n");
        return -1;
    }

    L = L->next;
    while(NULL != L)
    { 
        if(key == L->key)
        {
            *E = L->E;
            return 0;
        }
        L = L->next;
    }

    // 未找到該元素
    return -1;
}


// 刪除第一個(gè)key元素
int DelElem(LNode *L,  int key)
{
    LNode *tmp_L;
    
    if(NULL == L || NULL == L->next)
    {
        return -1;
    }
    
    while(NULL != L->next)
    {
        tmp_L = L->next;
        if(key == tmp_L->key)
        {
            L->next = tmp_L->next;
            free(tmp_L);
            return 0;
        }
        L = L->next;
    }
    return -1;    
}

int ChangeElem(LNode *L, int key, ElemType *E)
{
    if(NULL == L || NULL == L->next)
    {
        printf("find error\n");
        return -1;
    }

    L = L->next;
    while(NULL != L)
    {
 
        if(key == L->key)
        {
            L->E = *E;
            return 0;
        }
    }
    return -1;
}

int ShowAllElem(LNode *L)
{
    if(NULL == L || NULL == L->next)
    {
        printf("ShowAllElem error\n");
        return -1;
    }
    
    while(NULL != L->next)
    {
        printf("TTT---key[%d]--Elem[%d]\n",L->next->key, L->next->E);
        L = L->next;
    }
    return 0;
}

int ClearList(LNode *L)
{
    if(NULL == L || NULL == L->next)
    {
        printf("find error");
        return -1;
    }
    
    LNode *tmp_L = L->next;
    while(NULL != tmp_L)
    {
        L->next = tmp_L->next;
        free(tmp_L);
        tmp_L =  L->next;
    }
    
    return 0;
}

==================================================================

// main.c
#include "signal_list.h"

int main()
{
    int i;
    LNode L;
    ElemType E;

    SignalListInit(&L);

    for(i = 0; i < 10; i++)
    {
        E = i;
        AddElem(&L, i, &E);
    }

    ShowAllElem(&L);

    for(i = 0; i < 10; i++)
    {
        E = i;
        DelElem(&L, i);
    }
    
    ShowAllElem(&L);

    for(i = 10; i < 20; i++)
    {
        E = i;
        AddElem(&L, i, &E);
    }

    FindElem(&L,  19, &E);
    printf("TTT----find[%d]\n", E);
    DelElem(&L, 18);
    DelElem(&L, 17);
    ShowAllElem(&L);

    ClearList(&L);  
    ShowAllElem(&L);
    
    return 0;
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約