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

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

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

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

课程信息

课程内容概述

1. 简介

本节介绍了C语言中的单向链表之判空,删除。

2. 链表图形操作

  • 创建

图片描述

  • 插入

    • 头插法:每次都在头结点head后插入temp结点。

    图片描述

    • 尾插法: 每次都在尾结点后插入temp结点

图片描述

- 有序插入:按照指定顺序插入

图片描述

3. 代码示例

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

typedef int datatype_t;

typedef struct node {
    int data;
    struct node *next;
} linknode_t;

// 创建
linknode_t *create_empty_linklist() {
    linknode_t *head = malloc(sizeof(linknode_t));
    if (NULL == head) {
        printf("malloc fail!\n");
        return NULL;
    }
    memset(head, 0, sizeof(linknode_t));
    return head;
}

// 头插法
void insert_head_linklist(linknode_t *head, datatype_t data) {
    if (NULL == head) {
        printf("head is NULL point!\n");
        return;
    }
    linknode_t *temp = malloc(sizeof(linknode_t));
    if (NULL == temp) {
        printf("malloc fail!\n");
        return;
    }
    temp->data = data;
    temp->next = head->next;
    head->next = temp;
    return;
}

// 尾插法
void insert_tail_linklist(linknode_t *head, datatype_t data) {
    if (NULL == head) {
        printf("head is NULL point!\n");
        return;
    }
    linknode_t *temp = malloc(sizeof(linknode_t));
    if (NULL == temp) {
        printf("malloc fail!\n");
        return;
    }
    temp->data = data;
    linknode_t *p = head;
    while (p->next != NULL) {
        p = p->next;
    }
    temp->next = p->next;
    p->next = temp;
    return;
}

// 有序插入  大到小的顺序
void insert_order_linklist(linknode_t *head, datatype_t data) {
    if (NULL == head) {
        printf("head is NULL point!\n");
        return;
    }
    linknode_t *temp = malloc(sizeof(linknode_t));
    if (NULL == temp) {
        printf("malloc fail!\n");
        return;
    }
    temp->data = data;
    linknode_t *p = head;
    while (p->next != NULL && temp->data < p->next->data) {
        p = p->next;
    }
    temp->next = p->next;
    p->next = temp;
    return;

}

// 输出
void printf_data_linklist(linknode_t *head) {
    if (NULL == head) {
        printf("head is NULL point!\n");
        return;
    }
    linknode_t *p = head;
    while (p->next != NULL) {
        printf("%d ", p->next->data);
        p = p->next;
    }
    printf("\n");
    return;
}

int main() {
    linknode_t *head = NULL;
    int n = 5;
    datatype_t data[5] = {1, 5, 3, 7, 9};
    head = create_empty_linklist();

    // printf("Please input five number: \n");
    for (int i = 0; i < 5; i++) {
        insert_order_linklist(head, data[i]);
    }
    printf_data_linklist(head);

    return 0;
}

运行结果

9 7 5 3 1

学习心得

C语言中的数据结构,实践练习了单向链表之创建,插入,输出,感觉很有收获。

课程截图

1. 示例

图片描述

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