美文网首页
2019-05-16(链表相关 节点的定义(以链队列为例):}

2019-05-16(链表相关 节点的定义(以链队列为例):}

作者: 常人 | 来源:发表于2019-05-16 18:17 被阅读0次

严版数据结构 p61:

单链队列:

链表节点的定义:

typedef struct QNode{
QElemType         data;
struct   QNode   *next;
} QNode ,*QueuePtr;

定义队列:

typedef struct {
QueuePtr front;
QueuePtr rear; 
} LinkQueue;

参考 c primer plus p459

可以使用 指针 来代替 数组:

struct names {
char first[LEN];
char last[LEN];
};
struct pnames{
char * first;
char* last;
}

理解方式1

typedef struct {
QueuePtr front; "根据下面的关于指针的解释 :这里实际实指针(数组)"
QueuePtr rear; "实际上是:rear [ ]";
} LinkQueue;

参考 c primer plus p463 p465

理解方式2(更准确)

typedef struct {
QueuePtr front; "front 成员是一个嵌套结构 通过front 访问 QueuePtr结构体结点信息"
QueuePtr rear; 

} LinkQueue;


初始化的时候:*)
Struct LinkQueue Queue;
struct QueuePtr   p = malloc...;
Queue.rear->next = p;
Queue.rear = p
通过

下面代码的解释 应该是正确理解:

参考:看出就是嵌套结构:

https://www.cnblogs.com/renyuan/archive/2012/11/30/2796792.html

typedef struct QNode{
QElemType         data;
struct   QNode   *next;
} QNode ,*QueuePtr;

"*QueuePtr:声明一个指针类型的变量 ,变量的类型是QNode结构体定义的类型"


typedef struct {
QueuePtr front; "front 成员是一个嵌套结构 通过front 访问 QueuePtr结构体结点信息"
QNode * front; 

"以上两种格式的表达的意思是一样的,在结构体定义+声明的时候不是指针的形式 ,那么在 嵌套结构关系 结构体定义中就需要  声明结构体为指针类型;"

} LinkQueue;



辅助性例子:https://www.jianshu.com/p/71b697b804f8

下面是联合使用的用法 :
fit.digit = 23; //把23储存在fit 占字节2字节
fit.bigfl = 2.0;//清除23 把 2.0存在 fit 占 8字节
在联合中,一次储存一个值,不能 同时存一个int 一个 double 等类型字符 利用->访问数据也是一样;

用一个成员把值储存在一个联合中,然后与用另外一个成员进行查看内容,这种做法有时很有用,下面是例子:

联合的另外一种用法就是 (两个结构体 一个描述抽象物体,一个描述与物体的从属关系):

结构中储存 其成员的从属关系的信息,假设用一个结构表示一辆汽车,如果汽车属于驾驶者,用一个结构描述所有者,如果是租赁的,那么这个结构就是描述租赁公司;

struct owner {
    char socsecurity[12];
    ...
};

struct leasecompany{
    char name[40];
    char headpuarters[40];
...
};

union data {
    struct owner owncar;
    struct leasecompany leasecar;
};

struct car_data {
    char make[15];
    int status;    /*0=私有,1=租赁*/
    union data ownerinfo; 
    ...
};


假定flits是一个car_data结构。那么如果flits.status是0,程序就可以使用fits.ownerinfo.owncar.socsecurity; 如果flits.status是1,程序就可以使用flits.ownerinfo.leasecar.name。

例子2:Sqlist 说明学生信息储存在 list 中 的从属关系??(不是从属关系 定义结构不一样 Student 前面没有struct)

第二个结构体是定义一个链表:链表的成员变量数据类型 是第一个结构体表达的类型的数组:

typedef struct
{
    char name[20];
    int num;
    float math;
    float english;
    float computer;
}Student;

typedef struct
{
    Student data[MAXSIZE];
    int len;
}Seqlist;

Seqlist* Init_Seqlist()
{
    Seqlist*L;
    L=(Seqlist*)malloc(sizeof(Seqlist));
    L->len=0;
    return L;

}

其实结构体是一种数据类型:那么基本数据类型看做一个结构体,同样

struct stu_scores{

    int count;
    double average;
    double scores[];

} ;
struct flex *pf1,*pf2;

...

有人已经做过笔记:https://my.oschina.net/idreamo/blog/866620

相关文章

  • 2019-05-16(链表相关 节点的定义(以链队列为例):}

    严版数据结构 p61: 单链队列: 链表节点的定义: 定义队列: 参考 c primer plus p459 可以...

  • 线性表总结

    线性表总结 顺序表和链表的定义 链表的结构解析 顺序表类型定义 例 单链表的存储结构定义 例 链表的结构解析 单链...

  • 链表相关

    总结一下链表相关的操作 单链表节点的定义 实现单向链表的反向 删除单链表的所有节点

  • 【数据结构】【C#】009-队列:👬👬链队列

    C#数据结构:链队列 1、自定义链队列结构: 链队列节点类 2、链队列类: 链队列测试用例: 输出结果: 注: 队...

  • 链表常用操作的代码实现

    以单链表为例,假设单链表的节点结构为 则单链表的实现如下

  • 25_反转链表

    要求:输入一个链表,反转链表后,输出新链表的表头。 思路:  以a、b、c这3个节点为例:  用pre记录当前节点...

  • 链表在JS中的实现

    定义链表 链表是由一组节点组成的集合。每个节点都使用一个对象的引用指向它的后继,指向另一个节点的引用叫做链 单向链...

  • 数据结构-线性表-单链表-01

    线性数据结构- 单链表 java 定义单链表 添加到队尾(tail) 向链表中添加数据,添加到队头 节点插入到指定得位置

  • 利用java实现一个简单的链表结构

    定义: 所谓链表就是指在某节点存储数据的过程中还要有一个属性用来指向下一个链表节点,这样的数据存储方式叫做链表 链...

  • 面试题18:删除链表的节点

    题目:在O(1)时间内删除链表节点。给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点,链...

网友评论

      本文标题:2019-05-16(链表相关 节点的定义(以链队列为例):}

      本文链接:https://www.haomeiwen.com/subject/egiiaqtx.html