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;
}
链表
链表是一种动态数据结构,由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。
#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)的数据结构。
#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;
}