更新时间:2022-08-25 12:21
在计算机科学中,在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构(structure)。根据数据元素之间关系的不同特性,通常分为4类基本结构:线性结构、树形结构、集合、图状结构或网状结构。
在计算机科学中,在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构(structure)。根据数据元素之间关系的不同特性,通常分为4类基本结构:线性结构、树形结构、集合、图状结构或网状结构。
在计算机科学中,根据数据元素之间关系的不同特性,通常分为4类基本结构。
集合
集合是指结构中的数据元素之间除了“同属一个集合”的关系外,别无其他关系。例如这些数据项的类型是相同的。
线性结构
线性结构是指结构中的数据元素之间存在一个对一个的关系。常用的线性结构有:线性表,栈,队列,双队列,数组,串。
树形结构
树形结构是指结构中的数据元素之间存在一个对多个的关系。在树形结构中,树根结点没有前驱结点,其余每个结点有且只有一个前驱结点。叶子结点没有后续结点,其余每个结点的后续节点数可以是一个也可以是多个。经典数据结构中的各种树状图是一种典型的树形结构:一颗树可以简单的表示为根, 左子树, 右子树。 左子树和右子树又有自己的子树。
图状结构或网状结构
图状结构或网状结构是指结构中的数据元素之间存在多个对多个关系。网状结构(reticular formation)分为全连接网状和不完全连接网状两种形式。全连接网状中,每一个节点和网中其它节点均有链路连接。不完全连接网中,两节点之间不一定有直接链路连接,它们之间的通信,依靠其它节点转接。这种网络的优点是节点间路径多,碰撞和阻塞可大大减少,局部的故障不会影响整个网络的正常工作,可靠性高;网络扩充和主机入网比较灵活、简单。但这种网络关系复杂,建网不易,网络控制机制复杂。广域网中一般用不完全连接网状结构。
在面向对象的编程语言和面向过程的编程语言中,我们实现结构选择有所不同,一种是根据我们选择自定义,一种是调用系统包。
C
在C语言中,为了实现我想要的结构,可以自定义定义结构体类型,将多个相关的变量包装成为一个整体使用。在结构体中的成员,可以是相同、部分相同,或完全不同的数据类型。在C语言中,结构体不能包含函数。在面向对象的程序设计中,对象具有状态(属性)和行为,状态保存在成员变量中,行为通过成员方法(函数)来实现。C语言中的结构体只能描述一个对象的状态,不能描述一个对象的行为。在C++中,对结构体进行了扩展,C++的结构体可以包含函数。
C++
在表达式中,可以通过下列形式引用某个特定结构的成员:
结构名.成员
其中的机构成员运算符“.”将结构名和成员名连接起来。
结构还可以嵌套。我们可以用对角线上的两点来定义矩形,相应的结构定义如下:
struct rect{
struct point pt1;
struct point pt2;
};
结构rect包含两个point 类型的成员。如果按照下列方式声明screen变量:
struct rect screen ;
则可以用语句:
引用screen 的成员pt1的x坐标。
C#
声明结构的语法和声明类的语法相似
结构是值的类型 所有的值类型都一样 结构类型的变量含有自己的数据 因此
struct StructName
{
Memberdeclarations
}
例如 下面的代码生命了一个名称为Point的结构 他有两个共有字段 名称为X和Y 在Main中 声明了3个Point类型的变量 并对他们赋值 打印。
struct Point
{
public int X;
public int Y;
}
class Program
{
static void Main()
{
Point first,second,third;
first.X=10;first.Y=10;
second.X=20;second.Y=20;
third.X = first.X + second.X;
third.Y = first.Y+ second,Y;
}
}
在C++和C#中也有已经封装好的ji基本结构包可以直接调用,如Set。