编程语言   发布时间:2022-06-26  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了简单单链表实现大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

这里主要是实现了一个单链表,不带头节点的单链表,使用了二级指针。如果是带头节点的链表,其只要一级指针就可以了。 接下来是一个单链表翻转的函数。

typedef struct ListNode
{
    struct ListNode *pNext;
    int elem;
}ListNode;

void reverseList(ListNode **L)
{
    ListNode *newL = NULL;
    ListNode *temp = NULL;
    ListNode *pL = NULL;

    if((L== NULL) || (*L ==NULL))
    {
        return;
    }

    pL = *L;

    while(pL != NULL)
    {
        temp = (ListNode *)malloc(sizeof(ListNode));
        temp->elem = pL->elem;
        temp->pNext = newL;
        newL = temp;
        (*L) = pL->pNext;
        free(pL);
        pL = *L;
    }

    *L = newL;
}

void addNode(ListNode **L, int elem)
{
    ListNode *temp = NULL;

    if((L == NULL) )
    {
        return;
    }

    temp = (ListNode *)malloc(sizeof(ListNode));
    memset(temp, 0, sizeof(ListNode));
    temp->elem = elem;
    temp->pNext = (*L);
    (*L) = temp;
    //printf("--%d--n", temp->elem);

}

void printList(ListNode *L)
{
    ListNode *p = NULL;
    if(L == NULL)
    {
        return;
    }

    p = L;
    while(p != NULL)
    {
        printf("%dt", p->elem);
        p = p->pNext;
    }
    printf("n");
}

int main()
{
    int a[4]= {1, 2, 3, 4};
    int i = 0;

    ListNode *L = NULL;

    for(i = 0; i < 4; i ++)
    {
        addNode(&L, a[i]);
    }

    printList(L);

    reverseList(&L);

    printList(L);
}


大佬总结

以上是大佬教程为你收集整理的简单单链表实现全部内容,希望文章能够帮你解决简单单链表实现所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: