结构体(01)

PS:在这篇博客里我会把我的读者当纯小白讲,受限于个人实力,文章中难免出现疏漏,希望大佬们给予斧正。

开篇前言:

       自律者自由。

       最近一直在看数据结构的相关习题,在初期学习数据结构的时候,最重要的就是C语言中的结构体了。

       因为结构体,我们才有了链式存储结构,在某些算法的设计上,极大的简化了算法的时间复杂度。总之,这是一个灰常重要的知识啦,如果这一块学不好,就很难再攻克更艰深的算法知识了。

      所以说对于CS等专业的人来说,这一块一定要学好哦,放心听,我给一个文法的妹子都讲明白了,对诸位未来的大佬,来讲肯定是 一点问题都没有啊!一定要坚持看完哦,如果说有不会的地方,就先跳过去,我应该都会解释的。

首先我们看一下什么样子的东西叫做结构体

struct tag{
    Elem data1;
}name;

我们平常见到的结构体类型大概就是这个样子的,那么他代表什么意思呢?

首先 tag 字段代表你可以将他替换成任意的字符,它代表你已经凭空创造了一种数据类型叫做tagElem则是像int 等的这种类型字段,后面的data1就是我们常见的变量名啦,然后最后的name,则代表我已经使用这个叫做tag的结构体声明了一个变量,这个变量名字叫做name。

我举几个栗子来进行说明吧。 

struct {

 int a;

double b;

char c;

}s1;

这个结构体就代表我们声明了一个结构体变量叫做s1,我们可以通过 s1.a的方式来获取到对这个成员变量的操作权限。而我们只是声明了一个结构体叫做s1,我们同时还得到了,int s1.a,double s1.b和 char s1.c,但是我们现在只得到了一个这样的结构体变量,变量的名字叫做s1,那么我们要如何定义这种结构体呢?

struct node{
    int a;
    double b;
};

瞧!我们做了什么,我们声明了一个变量叫做node

这样我们就只需要在程序中加入这么一句话就可以了

struct node s2;

哈!我们又得到了一个这样的结构体变量s2,他的结构组成就如结构体中的定义所示,我们可以通过这种方式进行变量的创建。

所以结构究竟是什么呢?

结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。

下面我将简单解析结构体的最重要的应用------链表。

链表节点(如下图所示):

typedef struct LNode{

     int data;

     LNode *next;

}LNode,*LinkList;

一个链表的节点,就包含了一个int类型的变量和一个 LNode*的地址型变量,这样我们就可以通过data存储数据,使用next存储下一个节点的地址,这样不断地链入就形成了链表。

另外这里需要说明的是 LNode*和LinkList这两个语句是等价的

这就是一个链表节点的组成,对于这个链表的具体应用,我们在这就不详细展开讲解了,以后我还会在写一些补充说明。

下面我将就这个链表节点来讲一下各部分起到的作用

1.typedef        typedef 本身就是一个类似于宏的关键词,它的作用就是重命名,在这里的体现就是本来我们在声明结构体时应该是:

struct Name s1;

但是加上这个关键词之后我们只需要这样就可以进行声明了:

Name s2;

这样可以使代码更简洁

2.{}中的内容    在这其中的就是成员变量,一个结构体就是一个大家庭,这里面的成员变量就是家庭成员,他们各有各的作用

3.LNode, *LinkList  则代表对于这个结构体我们已经声明了两种调用类型 一种就是LNode类型,一种是LNode*类型。

以上就是对这个链表节点的一小点讲解。

接下来我们将会在下一篇文章中看一个具体的应用-----使用结构体来实现链表的创建,以及增删元素。

猜你喜欢

转载自blog.csdn.net/qq_39760343/article/details/82939081