Lista lineal: lista enlazada individualmente con nodo principal (lenguaje C)

Operación de lista vinculada de lista lineal

1. Definición de estructura

typedef struct LNode* LinkedList;

typedef struct LNode
{
    
    
    ElemType data;
    struct LNode* next;
}LNode;

2. Inicialización de la lista vinculada

bool InitLinkedList(LinkedList &L)
{
    
    
    L = (LinkedList)malloc(sizeof(struct LNode));
    if(!L) exit(OVERFLOW);
    L->next = NULL;
    return success;
}

3. Inserte un elemento en la posición especificada en la lista vinculada.

/*
    @description: 在链表指定位置插入元素
 */
bool LinkedListInsert(LinkedList &L, int index, ElemType e)
{
    
    
    LNode* p = L; int i = 1;
    while(p && i < index)
    {
    
    
        p = p->next;
        i++;
    }
    if(!p || i > index) return failed;
    LNode* s = (LNode* )malloc(sizeof(LNode));
    s->data = e;
    s->next = p->next;
    p->next = s;
    return success;
}

4. Elimina el elemento en la posición especificada de la lista vinculada.

/*
    @description: 删除链表指定位置的元素
 */
bool LinkedListDelete(LinkedList &L, int index)
{
    
    
    LNode* p = L; int i = 1;
    while(p->next && i < index)
    {
    
    
        p = p->next;
        i++;
    }
    if(!p->next || i > index) return failed;
    LNode* s = p->next;
    p->next = s->next;
    free(s);
    return success;
}

5. Obtén el elemento de posición especificado

/*
    @description: 获取链表指定位置元素
 */
bool GetLinkedListElem(LinkedList L, int index, ElemType &e)
{
    
    
    LNode* p = L->next; int i = 1;
    while(p && i < index)
    {
    
    
        p = p->next;
        i++;
    }
    if(!p || i > index)return failed;
    e = p->data;
    return success;
}

6. Obtenga la posición del elemento especificado en la lista vinculada

/*
    @description: 获取链表指定位置元素
    @return: 查询不到元素e则返回-1, 反之返回位置index
 */
int LocateLinkedListElem(LinkedList L, ElemType e)
{
    
    
    LNode* p = L->next; int i = 1;
    while(p && p->data != e)
    {
    
    
        p = p->next;
        i++;
    }
    if(p)return i;
    return -1;
}

7. Recorra la lista vinculada de principio a fin.

void ReadLinkedList(LinkedList &L)
{
    
    
    LNode* p = L->next;
    while(p)
    {
    
    
        printf("%d\n",p->data);
        p = p->next;
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_45830383/article/details/114369147
Recomendado
Clasificación