10分钟学会C语言数据结构基础,快速掌握链表与数组
本文面向C语言初学者,系统讲解常用数据结构的基础知识与操作方法。内容涵盖数组、链表、栈、队列、指针应用、结构体封装及实际应用案例。通过实例讲解和分步操作,帮助读者快速掌握C语言数据结构的基础技能,为后续算法与程序开发打下坚实基础。
正文教程
一、数组基础
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
for(int i=0; i<5; i++){
printf("%d ", arr[i]);
}
return 0;
}
技巧:数组是连续内存空间,适合快速索引元素
二、链表基础
单向链表
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
int main() {
Node *head = malloc(sizeof(Node));
head->data = 10;
head->next = malloc(sizeof(Node));
head->next->data = 20;
head->next->next = NULL;
Node *p = head;
while(p) {
printf("%d ", p->data);
p = p->next;
}
return 0;
}
技巧:链表适合频繁插入和删除操作
三、栈(Stack)
#include <stdio.h>
#define MAX 5
int stack[MAX], top=-1;
void push(int val){
if(top == MAX-1) { printf("栈满 "); return; }
stack[++top] = val;
}
int pop(){
if(top == -1) { printf("栈空 "); return -1; }
return stack[top--];
}
int main(){
push(10); push(20);
printf("%d ", pop());
printf("%d ", pop());
return 0;
}
技巧:栈用于函数调用、括号匹配、表达式求值
四、队列(Queue)
#include <stdio.h>
#define MAX 5
int queue[MAX], front=0, rear=0;
void enqueue(int val){
if(rear == MAX) { printf("队列满 "); return; }
queue[rear++] = val;
}
int dequeue(){
if(front == rear) { printf("队列空 "); return -1; }
return queue[front++];
}
int main(){
enqueue(10); enqueue(20);
printf("%d ", dequeue());
printf("%d ", dequeue());
return 0;
}
技巧:队列用于任务调度、消息处理
五、指针与结构体结合
#include <stdio.h>
typedef struct Student{
char name[20];
int age;
} Student;
int main(){
Student s = {"Tom", 20};
Student *p = &s;
printf("姓名: %s, 年龄: %d ", p->name, p->age);
return 0;
}
技巧:指针结合结构体实现复杂数据结构
六、实用技巧总结
数组适合快速索引,链表适合频繁增删
栈和队列是常用线性数据结构
指针与结构体结合可实现树、图等复杂结构
动态内存分配
malloc/free管理链表和栈队列多练习基本操作,为算法学习打基础