当前位置:首页 > 科学课件 > 正文内容

跪求数据结构课程设计(C语言版)代码,感激不尽

zhao_admin12个月前 (05-27)科学课件37

在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。[1]
定义与声明
结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。[1]
struct tag {
member-list
} variable-list ;

在一般情况下,tag、member-list、variable-list这3部分至少要出现2个。以下为示例:[1]
//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
//同时又声明了结构体变量s1
//这个结构体并没有标明其标签

struct {

int a;

char b;

double c;

} s1;

//同上声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
//结构体的标签被命名为SIMPLE,没有声明变量
struct SIMPLE{

int a;

char b;

double c;

};

//用SIMPLE标签的结构体,另外声明了变量t1、t2、t3
struct SIMPLE t1, t2[20], *t3;
//也可以用typedef创建新类型
typedef struct{
int a;
char b;
double c;
} Simple2;
//现在可以用Simple2作为类型声明新的结构体变量
Simple2 u1, u2[20], *u3;

在上面的声明中,第一个和第二声明被编译器当作两个完全不同的类型,即使他们的成员列表是一样的,如果令t3=&s1,则是非法的。[1]
结构体的成员可以包含其他结构体,也可以包含指向自己结构体类型的指针,而通常这种指针的应用是为了实现一些更高级的数据结构如链表和树等。[1]
//此结构体的声明包含了其他的结构体
struct COMPLEX{
char string[100];
struct SIMPLE a;
};
//此结构体的声明包含了指向自己类型的指针
struct NODE{
char string[100];
struct NODE *next_node;
};

如果两个结构体互相包含,则需要对其中一个结构体进行不完整声明,如下所示:[1]
struct B;
//对结构体B进行不完整声明
//结构体A中包含指向结构体B的指针
struct A{
struct B *partner;
//other members;
};
//结构体B中包含指向结构体A的指针,在A声明完后,B也随之进行声明
struct B{
struct A *partner;
//other members;};

结构体作用
结构体和其他类型基础数据类型一样,例如int类型,char类型 只不过结构体可以做成你想要的数据类型。以方便日后的使用。[1]
在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。由于C语言内部程序比较简单,研发人员通常使用结构体创造新的“属性”,其目的是简化运算。[1]
结构体在函数中的作用不是简便,其最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了。[1]
结构体的大小与内存对齐
结构体的大小不是结构体元素单纯相加就行的,因为我们主流的计算机使用的都是32bit字长的CPU,对这类型的CPU取4个字节的数要比取一个字节要高效,也更方便。所以在结构体中每个成员的首地址都是4的整数倍的话,取数据元素时就会相对更高效,这就是内存对齐的由来。每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。[1]
规则:
1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。[1]
2、结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构(或联合)最大数据成员长度中,比较小的那个进行。[1]
3、结合1、2可推断:当#pragma pack的n值等于或超过所有数据成员长度的时候,这个n值的大小将不产生任何效果。

扫描二维码推送至手机访问。

版权声明:本文由PPT写作技巧发布,如需转载请注明出处。

本文链接:http://www.ppt3000.com/post/64745.html

分享给朋友:

相关文章

九年级上册物理 摩擦力2

九年级上册物理 摩擦力2

1、题没写好,不知动力在哪?前驱车(向后 向前),后驱车(向前 向后),,四驱车(向前 向前),不同的话,答案不同。 2、A D 3、C 两次都是:竖直方向,则匀速时两次都:摩擦力等于物重。两次人没变--物重相等,故C。...

苏联最美女特工,潜伏爱因斯坦身边,如何窃取爱因斯坦核弹机密?

苏联最美女特工,潜伏爱因斯坦身边,如何窃取爱因斯坦核弹机密?

爱因斯坦即便是世界上最伟大的科学家之一,但他从来都不是什么善男信女,这个从爱因斯坦的婚姻和感情生活就看得出来。爱因斯坦一生取过2个老婆,其中第一个老婆还是他的堂姐。除此之外,爱因斯坦还有若干情人,根据爱因斯坦的信件记录,爱因斯坦在美国有过一...

绿色开花植物有性生殖的全过程:______→______→______→______→果实和种子的形成

绿色开花植物有性生殖的全过程:______→______→______→______→果实和种子的形成

绿色开花植物要形成果实和种子,必须经过开花、传粉和受精.花粉成熟后散落出来落到雌蕊柱头上,在柱头黏液j刺激下萌发长出花粉管,花粉管穿过花柱,进入子房,一直到达胚珠,同时,花粉管中j两个精子随花粉管j伸长而向下移动,最终进入胚珠内部,花粉管顶...

家长如何培养中班幼儿的自理能力?

家长如何培养中班幼儿的自理能力?

宝宝在家经常干些力所能及的事情,自己的事自己完成,爸妈要相信宝宝的能力并经常鼓励她,多赏识她,其实爸妈的赏识是宝宝积极的动力。不打击宝宝自尊心,不多指责宝宝,特别不在人面前数落宝宝,如真的需要也要悄悄地在她耳边批评,在宝宝面前多说些正面的话...

冀教版三年级科学测试题哪里有?

冀教版三年级科学测试题哪里有?

[url=]免费课件、教案、论文、试卷、在线考试的好地方[/url][url=]两万个课件全免费、全册/实录教案、优秀论文、最新试卷[/url] 怎样写好冀教版小学科学教学设计课件 要使每个学生在各个层面上获的成功,想办法让每个学生体验学习...

四年级下册科学教材全解电子书(四年级下册科学教材全解电子书人教版)

四年级下册科学教材全解电子书(四年级下册科学教材全解电子书人教版)

小学教材全解四年级下册多音字有哪些?人教版四年级下册语文第12课《自然之道》 【多音字】 1. 便(biàn、pián) 2. 着(zhe、zháo、zhuó、zhāo) 3. 朝(cháo、zhāo) 【近义词】   留心──留意  踌躇...