精华内容
下载资源
问答
  • 申请链表里,typedef struct LNode *LinkList; 将struct LNode 重命名为LinkList,为什么不写成typedefstruct LNode ) LinkList;前面一个怎么理解啊?
  • typedef struct LNode* list和struct LNode有什么区别?

    千次阅读 多人点赞 2020-04-22 00:35:55
      typedef struct LNode *list表示定义了一个别名list,list代表 struct LNode *类型的别名,它是一个指针类型。list a,就代表定义了一个struct LNode *类型的变量a。   而struct LNode代表一个结构体类型。...

      typedef struct LNode * list表示定义了一个别名listlist代表 struct LNode *类型的别名,它是一个指针类型。list a,就是定义了一个struct LNode *类型的变量a

      而struct LNode代表一个结构体类型。struct LNode a代表定义了struct LNode类型的变量a

      其详细理解如下所示:

    C语言

      在C语言中:

    struct StructName
    

      表示一个完整的类型名。就像int一样。区别是 struct 是自定义类型,而 int 是内置类型。所以声明的时候写法也是类似的:

    int n;
    struct StructName dummy; // 类型名  对象名
    

      但是C语言同样提供一个typedef关键字,可以给已有类型(包括内置和自定义类型)定义别名:

    typedef int INT;
    typedef struct StructName STRUCTNAME;
    

      注意看上面的结构,其实和声明变量一样的,只是在前面加一个typedef

    1. 如果没有typedefINT 就是一个int类型变量,STRUCTNAMEstruct StructName 类型变量。

    2. 加了 typedef 则“变量名”就变身“类型名”,而“类型名”代表的类型正是加typedef之前“变量名”对应的类型。

      根据上述逻辑,也可以定义对应的指针类型:

    typedef int *PINT;
    typedef struct StructName *PSTRUCTNAME;
    

      定义了这些别名之后,你就可以这样用:

    INT n;
    STRUCTNAME dummy;
    PINT pn;
    PSTRUCTNAME pdummy;
    

      等价于:

    int n;
    struct StructName dummy;
    int *pn;
    struct StructName *pdummy;
    

    C++

      C++中引入了类,关键字为 class,它是 struct的增强版本。声明一个类:

    class ClassName {
    private:
    	int n;
    public:
    	void setValue(int n);
    	int getValue();
    };
    

      当声明这个类的对象时,这样书写:

    ClassName className;
    

      而不需要像 struct 一样写成这样:

    class ClassName className;
    

      但是,在C++中,把 class 换成 struct一样可以编译:

    struct StructName {
    private:
    	int n;
    public:
    	void setValue(int n);
    	int getValue();
    };
    

      声明这个struct的对象时,可以这样书写:

    StructName structName;
    

      而不需要像在C语言中一样写成这样:

    struct StructName structName;
    

      但是由于C++兼容绝大多数C语法特性,因此上面这种写法也是正确的。

    展开全文
  • typedef struct LNode *list和struct LNode有什么区别 typedef在C中叫做声明别名,就是说同种事物的另外一个称谓,而C的别名代表的是typedef后面定义的所有内容,别名会写在最后。所以,}后面的Lnode和*LinkList都是...
    1. struct和typedef struct彻底明白了
    2. typedef struct LNode *list和struct LNode有什么区别
    3. typedef在C中叫做声明别名,就是说同种事物的另外一个称谓,而C的别名代表的是typedef后面定义的所有内容,别名会写在最后。所以,}后面的Lnode*LinkList都是struct Lnode的别名,使用别名的目的就是为了让结构体更方便于理解和控制,以后在使用的时候就很方便了。
    • 比如创建一个头指针,没有别名之前的写法是:
      struct Lnode *head = (struct Lnode *)malloc(sizeof(struct Lnode));
    • 现在有了别名,别名把struct Lnode给取代了,所以现在的写法变成了:
      Lnode *head = (Lnode )malloc(sizeof(Lnode));
      因为LinkList也是结构体的别名,所以也可以写成
      LinkList head = (LinkList)malloc(sizeof(*LinkList));
      两种别名也可以混合使用的,比如:
      LinkList head = (LinkList)malloc(sizeof(Lnode));
    展开全文
  • typedef struct LNode{ }LNode; 相当于给struct LNode{}起了一个新名字Lnode{} 比如在声明变量时,如果没有用typedef声明,自己定义变量时是这样子 struct LNode 变量名 如果用了typedef则变成 Lnode 变量名...

    typedef是对可以理解为各现有的数据类型起了一个新名字。

    typedef struct LNode{
    }LNode;

    相当于给struct LNode{}起了一个新名字Lnode{}

    比如在声明变量时,如果没有用typedef声明,自己定义变量时是这样子

    struct LNode 变量名

    如果用了typedef则变成

    Lnode 变量名

    简单来说就是更方便了。

    当然如果不用typedef

    struct LNode{
    
    };

    声明变量也可以 直接 LNode 变量名,或者LNode *指针名。

    *linklist就是创建一个结构体指针。

    展开全文
  • 关于链表初始化typedef struct LNode{}LNode,*linklist的理解

    千次阅读 多人点赞 2021-01-23 21:59:55
    typedef struct Node{ ElemType data;//ElemType是本书约定的统一数据元素类型,简单理解成int吧 struct LNode * next; }LNode,*LinkList; typedef的用法不在此细说,可以简单理解为给数据类型取别名。 对于这个...

    在严的数据结构(c语言版) 中看到一段伪代码:

    typedef struct Node{
        ElemType data;//ElemType是本书约定的统一数据元素类型,简单理解成int吧
        struct LNode * next;
    }LNode,*LinkList;
    

    typedef的用法不在此细说,可以简单理解为给数据类型取别名。

    对于这个代码,目的是定义线性表的单链表储存结构

    结构体部分比较好理解,一个是数据元素data,一个是指向本结构体的结构体指针next。

    关键在于LNode与*LinkList——

    抽象出两个句子:
    typedef struct Node LNode;
    typedef struct Node* LinkList;

    1、先说LNode,参照typede的用法,可以得知LNode就是struct Node1的别名,即LNode==struct Node;

    2、再说LinkList,是一个指向该结构体的指针别名。其实这个*应该不是跟着LinkList,而是跟在Node后面的。

    可以通过这样一个例子可以这样来理解
    typedef struct int ElemType
    typedef struct int* ElemTypePtr
    第一个是 定义整型变量的别名 ElemType
    第二个是 定义指向整型变量的指针的别名 ElemTypePtr

    用起来的话就如下:

    LNode A;//定义结构体变量A;
    LinkList B;//定义指向结构体的指针变量B;
    

    LNode 的对象都是结构体
    LinkList 的对象都是结构体指针


    1. 该处严格遵守c语言的语法规则,必须是struct Node,但在C++中可以是Node。 ↩︎

    展开全文
  • 在数据结构的链表,表示中 typedef struct Node * PtrToNode 和 typerdef struct List的表示说明 typedef struct Node * PtrToNode; struct Node{ elementype data; ptrToNode Next; }; typeded ptrToNode List; ...
  • typedef在C中叫做声明别名,就是说同种事物的另外一个称谓,而C的别名代表的是typedef后面定义的所有内容,别名会写在最后,所以,}后面的Lnode和*LinkList都是struct Lnode的别名,使用别名的目的就是为了让结构体...
  • 结构体定义 typedef struct LNode 用法说明

    万次阅读 多人点赞 2019-06-10 20:45:12
    最近复习数据结构,对链表的定义进行下说明: 将typedef和结构体的...typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList; 将精简代码还原: struct LNode { ElemType data; str...
  • typedef struct LNode *List; struct LNode{ ElementType Data[MAXSIZE]; int Last; }; struct LNode L; List PtrL; ----------------------------------------------------- 这段代码什么意思啊第一行应该...
  • 而外面的那个*Linklist,是结构体定义的一部分,相当于 typedef struct Lnode{...}Lnode; typedef struct Lnode * Linklist; 在定义链表节点时就可以用Linklist 代替(struct Lnode *)了。 ...
  • 一、typedef 关键字 1. 简介: typedef工具是一个高级数据特性,利用typedef可以为某一些类型自定义名称。 2. 工作原理: 例如我们定义链表的存储结构时,需要定义结点的存储数据元素的类型,如定义一个 int ...
  • typedef struct LNode * list表示定义了一个别名list,list代表struct LNode *类型的别名,它是一个指针类型。list a,就是定义了一个struct LNode *类型的变量a。   而struct LNode代表一个结构体类型。struct...
  • typedef struct lnode(结构体及结构体指针)解惑

    千次阅读 多人点赞 2015-07-29 19:17:25
    /* 数据结构解惑01  ...typedef struct QNode { QElemType data; //数据域  struct QNode *next; //指针域  }QNode,*QueuePtr; typedef struct { QueuePtr front; //队头指针 QueuePtr rear; //队尾指针  };
  • typedef struct LNode而不是struct LNode?

    千次阅读 2014-10-27 20:51:32
    typedef struct 是为了使用这个结构体方便。 具体区别在于: 若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n; 若用typedef,可以这样写,typedef struct node{}NODE; 。...
  • c语言求两个多项式之和算法错误#include #include typedef struct Lnode{float coef; //系数 int expn; //指数struct Lnode *next; }LinkList;LinkList * CreatList(int n) //用n限制循环次数 {LinkList *L,*p,*r;...
  • typedef struct 是为了使用这个结构体方便。 具体区别在于: 若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n; 若用typedef,可以这样写,typedef struct node{}NODE; 。在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,001
精华内容 9,200
关键字:

typedefstructlnode