1,大数据开发程序员如何通过跳槽薪资翻倍

42 阅读3分钟

我们先定义好结构体

typedef struct Node
{
    int data;           //数据域
    struct Node *pNext; //指针域
} NODE, *PNODE;         // NODE等于struct Node,PNODE等价于struct Node*

1.链表的长度

首先我们知道这个函数需要返回一个整型变量,也就是它的长度,其次我们要知道这条链表的头节点,来确定出整条链表,最后我们要知道,链表的长度,不包括头结点,链表的最后一个结点指针域为NULL

在这个链表中,除了头节点意外,有3个结点,所以长度为3,

我们的思路是,定义一个指针,指向头节点

前三个的节点的指针域不为空,头结点的指针域保存第一个节点的地址,第二个结点保存着第三个节点的地址......根据这个思想我们写出代码

int length_list(PNODE pHead)
{
    PNODE p = pHead; //定义指向头结点的指针
    int count = 0;   //计数
    while (p->pNext != NULL)
    {
        count++;
        p = p->pNext;
    }
    return count;
}

每记一次数,通过p->pNext让指针后移,知道p->pNext等于NULL的时候(到了最后一个结点),停止循环,此时的count为链表的长度

2.链表的判空

链表的判空十分简单,如果头节点的指针域为NULL,说明这个链表只存在头节点,链表为空

反之如果不NULL,则链表不空

bool empty(PNODE pHead)
{
    if (pHead->pNext == NULL)
    {
        return true;
    }
    else
    {
        return false;
    }
}

3.链表的排序

我们在之前的学习中,学习过一些排序方式,有选择排序,冒泡排序这两种基本的排序,在链表的排序中,我们也可以使用这样的思想。

冒泡排序就是比较数组中相邻两个数的值,如果前面的数大,就交换两个数的值,这样一次循环下来,保证最后一个数是最大的

但是链表不能通过索引值去比较大小,因此我们需要定义两个指针,这两个指针是相邻的位置

pfront开始指向首节点,pbehind代表pfront后面的值,每比较一次,就将指针们向后移动一位

void sort_list(PNODE pHead)
{
    int i, j, temp;
    int len = length_list(pHead); //传入链表的长度
    PNODE pfront, qbehind;
    for (i = 0, pfront = pHead->pNext; i < len - 1; i++, pfront = pfront->pNext)
    // pfront先指向首节点,qbehind为pfront后面的结点
    {
        for (j = i + 1, qbehind = pfront->pNext; j < len; j++, qbehind = qbehind->pNext)

        {
            if (pfront->data > qbehind->data) //并没有交换指针域,只是交换了数据域
            {
                temp = pfront->data;
                pfront->data = qbehind->data;
                qbehind->data = temp;
            }
        }
    }
}


![img](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/d7ac031c790942fab98d421fb6c18676~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771857183&x-signature=aUzVq%2FUYC5u3cVTo3zQyZXMe7ts%3D)
![img](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/3f8edb94927e4c5fa6fd7d31b4ab0244~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771857183&x-signature=BTF8tJn0BOZZxAQ6jv4zIilOup0%3D)
![img](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/1c3b488a8156452f89ce391e04ef42d6~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771857183&x-signature=31zrjMHMKr6RXZVJJKLat4QPdcI%3D)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**


**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://gitee.com/vip204888)**