数据结构入门指南(C语言版)

本文作为数据结构入门指南,详细介绍了数组、栈、队列、结构体、链表和二叉树的基本概念、特点、实现方法及原理图。通过实例解析了数据结构在内存中的逻辑分布和操作方式,帮助初学者理解数据结构的本质。
摘要由CSDN通过智能技术生成

初识数据结构

1.数组

数组是数据结构的基础。

数组在程序中往往是从内存整体中分配出一块连续的空间,数组反映了内存的物理结构

在这里插入图片描述

2.数组的应用

以数组为基础的数据结构,可供各种各样的算法处理大量数据

3.数据结构概念

内存的物理结构无法改变,而数据结构可以通过程序在逻辑上改变内存的物理结构,使数据按照自己的相反分布

典型的数据结构如下:
在这里插入图片描述

栈的实现方法

1.栈的特点

栈中数据的使用顺序和堆积顺序是相反的,堆积顺序是从下到上,而使用顺序是从上到上,就好像干草堆一样

在这里插入图片描述

这种数据存取方式称为LIFO(last in first out,后进先出),即最后存入的数据最先被处理

2.栈的实现

#include <stdio.h>
// 构建数组作为栈的本体 
char Stack[100];
// 栈顶指针,始终指向栈数据的最顶端 
char StackPointer = 0; 

// 入栈函数,存储数据 
void Push(char Data){
   
	// 数据存储在栈顶指针指向位置 
	Stack[StackPointer] = Data;
	
	// 更新栈顶指针的值 
	StackPointer++;
}

// 出栈函数,读取数据 
char Pop(){
   
	
	// 更新栈顶指针的值 
	StackPointer--;
	// 在栈顶指针处取出数据 
	return Stack[StackPointer];
}
 
// 运行实例 
int main()
{
   	
	//存储数据 
	Push(1);
	Push(2);
	Push(3);
	Push(4);
	
	//读取数据 
	while (StackPointer !=0) {
   
		char result = Pop();
		printf("%d\n",result);
}

}

3.原理图

在这里插入图片描述

注意此图的栈底放在上面,最底部才是栈顶

4.语法解释

  • 最终实现效果是:存入顺序是1,2,3,4;取出顺序是4,3,2,1
  • 栈的成分:数组,栈顶指针,入栈函数,出栈函数
  • 入栈函数将数据压入栈中
  • 出栈函数将数据从栈中弹出
  • 存储5个数据,最后栈顶指针指向5的地址(地址4为最后一个数据),所以在出栈函数中,栈顶指针需要减1,才能取得第一个数据

队列的实现方法

1.队列的特点

队列中最先存入的数据是被最先处理的,这种方式被称为FIFO(first in first out, 先进先出)。就像排队上车一样,先到的人就能先上车
在这里插入图片描述

2.队列的实现

#include<stdio.h> 

// 构建作为队列本质的数组 
char  Queue[100];
// 标识数据存储位置的索引 
char SetIndex = 0;
// 标识数据读取位置的索引 
char GetIndex = 0;

 // 存储数据函数 
 void Set(char Data){
   
 	// 存入数据
	 Queue [SetIndex] = Data;
	 
	 // 更新存储索引 
	 SetIndex++;
	  
	 // 到达数组末尾则折回开头 
	 if(SetIndex>=100){
   
	 	SetIndex = 0;
	 } 
 }
 
 // 读取数据函数 
 char Get(){
   
 	char Data;
 	
	 // 读取数据 
 	Data = Queue[GetIndex];
 	
 	// 更新读取索引 
 	GetIndex++;
 	
 	//  到达数组末尾则折回开头 
 	if(GetIndex>=100){
   
 		GetIndex = 0;
	 }
	
	// 返回读出数据 
	return Data;
 }
 
 
 // 运行实例 
int main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值