找回密码
 立即注册
查看: 766|回复: 10

第一次接触链表 裂开了

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:233
  • 最近打卡:2025-04-30 16:08:37

61

主题

818

回帖

1490

积分

金牌会员

积分
1490
发表于 2024-8-7 16:01:31 | 显示全部楼层 |阅读模式
本来以为学会c了  没想到还差得远呀  {:5_271:}


补下知识吧!!!


想学习rt—thread    买了一本书  开始直接讲原理  链表  汇编语言都上了  咋办呀    都不会  


各位学过的大佬 能给点指点意见不
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:233
  • 最近打卡:2025-04-30 16:08:37

61

主题

818

回帖

1490

积分

金牌会员

积分
1490
发表于 2024-8-7 16:02:01 | 显示全部楼层
#include <stdio.h>
#include <stdlib.h>

// 定义链表节点结构
struct Node {
    int data;
    struct Node* next;
};

// 创建链表节点
struct Node* createNode(int data) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    if (newNode == NULL) {
        printf("内存分配失败!\n");
        exit(1);
    }
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}

// 打印链表
void printList(struct Node* head) {
    struct Node* current = head;
    while (current!= NULL) {
        printf("%d ", current->data);
        current = current->next;
    }
    printf("\n");
}

// 插入节点到链表头部
void insertAtHead(struct Node** head_ref, int new_data) {
    struct Node* newNode = createNode(new_data);
    newNode->next = (*head_ref);
    (*head_ref) = newNode;
}

// 插入节点到链表尾部
void insertAtTail(struct Node** head_ref, int new_data) {
    struct Node* newNode = createNode(new_data);
    struct Node* last = *head_ref;

    while (last->next!= NULL) {
        last = last->next;
    }

    last->next = newNode;
    newNode->next = NULL;
}

// 插入节点到指定位置
void insertAtPosition(struct Node** head_ref, int new_data, int position) {
    struct Node* newNode = createNode(new_data);
    struct Node* current = *head_ref;
    struct Node* prev = NULL;

    int i = 1;
    while (i < position - 1 && current!= NULL) {
        prev = current;
        current = current->next;
        i++;
    }

    if (current == NULL) {
        printf("指定位置超出链表范围!\n");
        return;
    }

    newNode->next = current;
    prev->next = newNode;
}

// 删除链表节点
void deleteNode(struct Node* node) {
    if (node == NULL) {
        printf("要删除的节点为空!\n");
        return;
    }

    struct Node* temp = node->next;
    free(node);
    node = temp;
}

// 释放链表内存
void freeList(struct Node* head) {
    while (head!= NULL) {
        struct Node* temp = head;
        head = head->next;
        free(temp);
    }
}

int main() {
    // 创建链表
    struct Node* head = NULL;

    // 插入节点到链表头部
    insertAtHead(&head, 7);
    insertAtHead(&head, 13);
    insertAtHead(&head, 18);

    // 打印链表
    printf("创建链表后:\n");
    printList(head);

    // 插入节点到链表尾部
    insertAtTail(&head, 56);
    insertAtTail(&head, 31);

    // 打印链表
    printf("插入节点到链表尾部后:\n");
    printList(head);

    // 插入节点到指定位置
    insertAtPosition(&head, 22, 3);

    // 打印链表
    printf("插入节点到指定位置后:\n");
    printList(head);

    // 删除链表节点
    deleteNode(head->next->next);

    // 打印链表
    printf("删除链表节点后:\n");
    printList(head);

    // 释放链表内存
    freeList(head);

    return 0;
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:233
  • 最近打卡:2025-04-30 16:08:37

61

主题

818

回帖

1490

积分

金牌会员

积分
1490
发表于 2024-8-7 16:07:07 | 显示全部楼层
malloc是 C 和 C++ 语言中的标准库函数,用于动态分配内存。


这个函数学过以后用单片机  就没用到过   都忘了
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-8-7 16:57:31 | 显示全部楼层
链表可以看看浙大的慕课
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-8-7 17:24:18 | 显示全部楼层
C语言学完了 找一本计算机系的教材 数据结构 最好找C语言版的 看看
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:449
  • 最近打卡:2025-04-30 10:57:37

17

主题

533

回帖

1326

积分

金牌会员

积分
1326
发表于 2024-8-7 22:26:54 | 显示全部楼层
哪里给你讲链表了。 只不过对象管理器的管理对应的对象的时候是按照链表排列的。 这不是很简单吗? 比如一个Timer对象,在链表中管理是按照counter的值进行排序的
自信就会温和,温和就会坚定!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:391
  • 最近打卡:2025-04-30 00:26:42

0

主题

336

回帖

1490

积分

金牌会员

积分
1490
发表于 2024-8-7 23:31:31 | 显示全部楼层
多到B站去看数据结构的视频吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:233
  • 最近打卡:2025-04-30 16:08:37

61

主题

818

回帖

1490

积分

金牌会员

积分
1490
发表于 2024-8-8 10:56:15 | 显示全部楼层
_奶*** 发表于 2024-8-7 17:24
C语言学完了 找一本计算机系的教材 数据结构 最好找C语言版的 看看

多谢  指点  得买本书看看了

截图202408081056055818.jpg


哪个好一点
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2024-12-23 11:42:56

3

主题

28

回帖

154

积分

注册会员

积分
154
发表于 2024-8-8 12:18:24 | 显示全部楼层
看过《人体蜈蚣》这部电影不?这就是链表最直观的体现了,后一个的头连接前一个的屁股
回复 支持 0 反对 1

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-05-01 09:36:10
已绑定手机

31

主题

142

回帖

1557

积分

金牌会员

积分
1557
发表于 2024-8-8 14:22:42 | 显示全部楼层
我最近也在学数据结构,真的有种知识躲着我脑子的感觉
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 00:07 , Processed in 0.129055 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表