为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
C C++ 嵌入式

【备战春招】第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. 示例

图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消