继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【备战春招】第18天 嵌入式工程师学习笔记

慕粉152226940
关注TA
已关注
手记 72
粉丝 8
获赞 43

【备战春招】第18天 嵌入式工程师学习笔记

课程信息

课程内容概述

1. 简介

本节介绍了C语言中的单向循环链表。

单向循环链表是对单向链表的一种改进方式。本质是链表尾结点的指针域存放头节点的地址,

这种首尾相连的链表,叫做单向循环链表

2. 图形操作

图片描述

3. 代码示例

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

typedef int data_t;

typedef struct node {
    data_t value;
    struct node *next;
} looplist_t;


/**
 * 插入
*/
void insert_node(looplist_t *head, data_t data) {
    looplist_t *tmp = (looplist_t *) malloc(sizeof(looplist_t));
    tmp->value = data;
    tmp->next = head->next;
    head->next = tmp;
    return;
}

/**
 * 打印
*/
void print_list(looplist_t *head) {
    looplist_t *p = head;
    while (head != p->next) {
        printf("%d ", p->value);
        p = p->next;
    }
    printf("%d ", p->value);
    printf("\n");
    return;
}


/**
 * 构建
*/
looplist_t *create_list(int n) {

    looplist_t *head_p;
    int i;

    head_p = (looplist_t *) malloc(sizeof(looplist_t));
    if (NULL == head_p) {
        printf("node_t fail");
    }
    head_p->value = 1;
    head_p->next = head_p;

    for (i = n; i > 1; i--) {
        insert_node(head_p, i);
    }

    return head_p;
}

/**
 * 约瑟夫问题
*/
void josephu(looplist_t *head, int k, int m) {

    looplist_t *start_node = head;
    looplist_t *p;
    int i;

    // 获取开始节点
    for (i = 1; i < k; i++) {
        start_node = start_node->next;
    }

    p = start_node;
    i = 1;
    while (p->next != p) {

        if (0 == i % (m - 1)) {
            printf("%d ", p->next->value);
            p->next = p->next->next;
        }
        p = p->next;
        i++;
    }

    printf("%d \n", p->value);

    return;
}


int main(int argc, char const *argv[]) {
    looplist_t *head;
    int n, k, m, i;

    printf("please input n,k,m: \n");
    scanf_s("%d%d%d", &n, &k, &m);

    head = create_list(n);

    print_list(head);

    josephu(head, k, m);

    return 0;
}

运行结果

please input n,k,m:
5 3 2
1 2 3 4 5
4 1 3 2 5

学习心得

C语言中的数据结构,实践练习了单向循环链表,感觉很有收获。

课程截图

1. 示例

图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP