C# 数据结构

为什么学习数据结构

同样的问题,有的人写出来的程序效率高,有的人却用很复杂的方法解决。
学习数据结构能用最有效的方法解决绝大多数的问题。

学习《数据结构》的目的有三个。
  1. 常用的数据结构形成了程序员基本数据结构工具箱(toolkit)。对于许多常见的问题,工具箱里的数据结构是理想的选择。就像.NET Framework 中 Windows 应用程序开发中的工具箱,程序员可以直接拿来或经过少许的修改就可以使用,非常方便。
  2. 是讲授常用的算法,这和数据结构一样,是人们在长期实践过程中的总结,程序员可以直接拿来或经过少许的修改就可以使用。可以通过算法训练来提高程序设计水平。
  3. 目的是通过程序设计的技能训练促进程序员综合能力的提高。

基本概念和术语

1、 数据(Data)
计算机程序处理各种各样的数据,可以是数值数据,如整数、实数或复数;也可以是非数值数据,如字符、文字、图形、图像、声音等。

2、 数据元素(Data Element)和数据项(Data Item)
数据元素是数据的基本单位,在计算机程序中通常被作为一个整体进行考虑和处理。一个数据元素可由若干个数据项(Data Item)组成。数据项是不可分割的、含有独立意义的最小数据
单位,数据项有时也称为字段(Field)或域(Domain)。例如,一条学生记录就是一个数据元素。这条记录中的学生学号、姓名、性别、籍贯、出生年月、成绩等字段就是数据项。数据项分为两种,一种叫做初等项,如学生的性别、籍贯等,在处理时不能再进行分割;另一种叫做组合项,如学生的成绩,它可以再分为数学、物理、化学等更小的项。

3、 数据对象(Data Object)
数据对象是性质相同的数据元素的集合, 是数据的一个子集。例如,整数数据对象是{0,1,2,3,…},字符数据对象是{a,b,c,…}。

4、 数据类型(Data Type)
数据类型是高级程序设计语言中的概念,是数据的取值范围和对数据进行操作的总和。数据类型规定了程序中对象的特性。程序中的每个变量、常量或表达式的结果都应该属于某种确定的数据类型。例如,C#语言中的字符串类型( String,经常写为 string)。一个 String 表示一个恒定不变的字符序列集合,所有的字符序列集合构成 String 的取值范围。我们可以对 String 进行求长度、复制、连接两个字符串等操作。

数据结构分类 (Data Structure)

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。在任何问题中,数据元素之间都不是孤立的,而是存在着一定的关系,这种关系称为结构(Structure)。根据数据元素之间关系的不同特性,通常有 4 类基本数据结构:
(1) 集合(Set):如图 1.1(a)所示,该结构中的数据元素除了存在“同属于一个集合”的关系外,不存在任何其它关系。
(2) 线性结构(Linear Structure):如图 1.1(b)所示,该结构中的数据元素存在着一对一的关系。
(3) 树形结构(Tree Structure):如图 1.1©所示,该结构中的数据元素存在着一对多的关系。
在这里插入图片描述

算法和数据结构的关系

数据结构可以认为是数据在程序中的存储结构,和基本数据操作。
算法可以是认为解决问题的,算法是基于数据结构的。

算法的评价标准

运行时间(Running Time)。
占用空间(Storage Space)。
有时需要牺牲空间来换取时间,有时需要牺牲时间来换取空间。
其他方面:正确性(Correctness)、可读性(Readability)、健壮性(Robustness)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#是一种面向对象的编程语言,它提供了丰富的数据结构和算法库,用于处理和组织数据。下面是一些常见的C#数据结构和它们的特点: 1. 数组(Array):数组是一种线性数据结构,用于存储相同类型的元素。它具有固定大小,可以通过索引访问元素。C#中的数组可以是一维、二维或多维的。 2. 列表(List):列表是一种动态数组,可以根据需要自动调整大小。它提供了添加、删除、插入和查找元素方法。C#中的List类是泛型的,可以存储任意类型的元素。 3. 链表(LinkedList):链表是一种非连续的数据结构,由节点组成,每个节点包含一个值和指向下一个节点的引用。链表可以高效地插入和删除元素,但访问元素需要遍历整个链表。 4. 栈(Stack):栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。C#中的Stack类提供了Push、Pop和Peek等方法。 5. 队列(Queue):队列是一种先进先出(FIFO)的数据结构,只能在队尾插入元素,在队头删除元素。C#中的Queue类提供了Enqueue、Dequeue和Peek等方法。 6. 字典(Dictionary):字典是一种键值对的集合,每个键都唯一对应一个值。C#中的Dictionary类是泛型的,可以存储任意类型的键值对。 7. 集合(Set):集合是一种无序且不包含重复元素的数据结构C#中的HashSet类和SortedSet类分别提供了无序和有序的集合实现。 以上是C#中常见的数据结构,它们在不同场景下有不同的应用。你可以根据具体的需求选择合适的数据结构来处理和组织数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值