C语言版数据结构详解与实现

C语言版数据结构详解与实现

大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来深入探讨C语言中数据结构的详细实现及其应用。

数据结构概述

数据结构是计算机存储、组织数据的方式,涉及到如何在计算机中组织和存储数据以便有效使用的问题。常见的数据结构包括数组、链表、栈、队列、树、图等。

数组

数组是一种最简单的数据结构,由相同类型的元素按一定顺序排列而成。

c 复制代码
#include <stdio.h>

int main() {
    // 定义一个整型数组
    int array[5] = {1, 2, 3, 4, 5};
    
    // 访问数组元素并打印
    for (int i = 0; i < 5; ++i) {
        printf("%d ", array[i]);
    }
    printf("\n");
    
    return 0;
}

链表

链表是一种动态数据结构,由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。

c 复制代码
#include <stdio.h>
#include <stdlib.h>

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

int main() {
    // 创建链表节点
    struct Node* head = NULL;
    struct Node* second = NULL;
    struct Node* third = NULL;
    
    // 分配内存并分别赋值
    head = (struct Node*)malloc(sizeof(struct Node));
    second = (struct Node*)malloc(sizeof(struct Node));
    third = (struct Node*)malloc(sizeof(struct Node));
    
    head->data = 1;         // 赋值头结点
    head->next = second;    // 连接第一个节点
    
    second->data = 2;       // 赋值第一个节点
    second->next = third;   // 连接第二个节点
    
    third->data = 3;        // 赋值第二个节点
    third->next = NULL;     // 尾结点设为空
    
    // 遍历链表并打印节点数据
    struct Node* current = head;
    while (current != NULL) {
        printf("%d ", current->data);
        current = current->next;
    }
    printf("\n");
    
    return 0;
}

栈与队列

栈和队列是两种基本的数据结构,栈是一种后进先出(LIFO)的数据结构,而队列是一种先进先出(FIFO)的数据结构。

c 复制代码
#include <stdio.h>
#include <stdlib.h>

// 栈的实现
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;

void push(int item) {
    if (top == MAX_SIZE - 1) {
        printf("Stack Overflow\n");
        return;
    }
    stack[++top] = item;
}

int pop() {
    if (top == -1) {
        printf("Stack Underflow\n");
        return -1;
    }
    return stack[top--];
}

int main() {
    // 测试栈的功能
    push(1);
    push(2);
    push(3);
    
    printf("%d\n", pop());  // 输出3
    printf("%d\n", pop());  // 输出2
    
    return 0;
}
相关推荐
田梓燊3 小时前
力扣:23.合并 K 个升序链表
算法·leetcode·链表
re林檎4 小时前
算法札记——4.27
算法
AI人工智能+电脑小能手4 小时前
【大白话说Java面试题】【Java基础篇】第15题:JDK1.7中HashMap扩容为什么会发生死循环?如何解决
java·开发语言·数据结构·后端·面试·哈希算法
数据牧羊人的成长笔记4 小时前
逻辑回归与Softmax回归
算法·回归·逻辑回归
郑州光合科技余经理5 小时前
同城O2O海外版二次开发实战:从支付网关到配送算法
开发语言·前端·后端·算法·架构·uni-app·php
上弦月-编程7 小时前
递归实现C语言菱形图案打印
c语言
Mrlxl.cn7 小时前
计算机网络——网络层
c语言·数据结构·计算机网络·考研
d111111111d8 小时前
STM32-UART封装问题解析
笔记·stm32·单片机·嵌入式硬件·学习·算法
寒秋花开曾相惜8 小时前
(学习笔记)4.2 逻辑设计和硬件控制语言HCL(4.2.1 逻辑门&4.2.2 组合电路和HCL布尔表达式)
linux·网络·数据结构·笔记·学习·fpga开发
叶子野格8 小时前
《C语言学习:指针》12
c语言·开发语言·c++·学习·visual studio