链表C语言实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37153702/article/details/78023167
#include<stdio.h>
#include<stdlib.h>

typedef struct Node
{
    int a;
    struct Node* pNext;

}Node;


Node* top = NULL;
Node* end = NULL;

void addNode(int a)
{
    Node* node = (Node*)malloc (sizeof(Node));
    node->pNext = NULL;
    node->a = a;
    if(top==NULL)
    {
        top = node;
    }
    else
    {
        end->pNext = node;
    }
    end = node;
}

void delNode(int a)
{
    Node *pptop = top;
    if(top->a==a)
    {
        Node* node=top;
        top = top->pNext;
        free(node);
        return;
    }
    while(pptop->pNext)
    {
        if(pptop->pNext->a == a)
        {
            Node* node=pptop->pNext;
            pptop->pNext = pptop->pNext->pNext;
            free(node);
            return;
        }

        pptop = pptop->pNext;
    }

}

Node* findNode(int a)
{
    Node* pptop = top;
    while(pptop)
    {
        if(pptop->a==a)
        {
            return pptop;
        }

        pptop=pptop->pNext;
    }
    return NULL;
}

void showNode()
{
    Node* pptop = top;
    while(pptop)
    {
        printf("%d\n",pptop->a);
        pptop = pptop->pNext; 
    }
}

int main()
{
    int a=3;
    while(a--)
    {
        addNode(a);
    }
    showNode();
    delNode(1);
    showNode();

    return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_37153702/article/details/78023167