新闻中心

10分钟学会C语言数据结构基础,快速掌握链表与数组

栏目:软件教程 日期: 作者:admin 阅读:5

本文面向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;
}

  • 技巧:数组是连续内存空间,适合快速索引元素


二、链表基础

  1. 单向链表

#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;
}

  • 技巧:指针结合结构体实现复杂数据结构


六、实用技巧总结

  1. 数组适合快速索引,链表适合频繁增删

  2. 栈和队列是常用线性数据结构

  3. 指针与结构体结合可实现树、图等复杂结构

  4. 动态内存分配malloc/free管理链表和栈队列

  5. 多练习基本操作,为算法学习打基础

相关资讯