Eip_Nit_AC 2019-04-10 18:14 采纳率: 25%
浏览 3046
已结题

p = (Node*)malloc(sizeof(Node));和 L = (CreateList)malloc(sizeof(Node));这个有什么区别?

#include<stdio.h>
#include<malloc.h>
typedef struct Node
{
    int data;
    struct Node *next;
}Node, *CreateList;
void InsertList(CreateList *L, int m)
{
    Node *t, *s;
    s = *L;
    while (m > s->next->data && s->next->next != NULL) s = s->next;
    if (s->next->next == NULL)

    {
        t = (Node*)malloc(sizeof(Node));
        t->data = m;
        s->next->next = t;
        s = t;
        s->next = NULL;
    }
    else
    {
        t = (Node*)malloc(sizeof(Node));
        t->data = m;
        t->next = s->next;
        s->next = t;
    }
}
void Print(CreateList L)
{
    Node *p;
    p = L->next;
    while (p->next)
    {
        printf("%d ", p->data);
        p = p->next;
    }printf("%d", p->data);
}
int main()
{
    CreateList L;
    int i, a, m, n;
    Node *last, *p;
    L = (CreateList)malloc(sizeof(Node));
    L->data = 0;
    L->next = NULL;
    last = L;
    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a);
        p = (Node*)malloc(sizeof(Node));
        p->data = a;
        p->next = NULL;
        last->next = p;
        last = p;
    }
    InsertList(&L, m);
    Print(L);
    return 0;
}

p = (Node*)malloc(sizeof(Node));和 L = (CreateList)malloc(sizeof(Node));这个有什么区别?
刚刚学习数据结构,请问各位大佬这两个的区别在哪里

  • 写回答

2条回答 默认 最新

  • 泡视界 2019-04-10 18:27
    关注

    没区别朋友,只是这段代码交叉使用Node和*CreateList。其实就是想用CreateList指向链表头,其余同Node创建对象。
    这样看起来比较难受,我个人喜欢统一表示,要用指针的地方,加上*。
    L = (CreateList)malloc(sizeof(Node));这句申请的是头节点
    p = (Node*)malloc(sizeof(Node));这句申请的是普通节点,可以复用这一句,可能不同点就是这一句何以复用吧。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月10日

悬赏问题

  • ¥15 解决websocket跟c#客户端通信
  • ¥30 Python调用dll文件输出Nan重置dll状态
  • ¥15 浮动div的高度控制问题。
  • ¥66 换电脑后应用程序报错
  • ¥50 array数据同步问题
  • ¥15 pic16F877a单片机的外部触发中断程序仿真失效
  • ¥15 Matlab插值拟合差分微分规划图论
  • ¥15 keil5 target not created
  • ¥15 C/C++数据与算法请教
  • ¥15 怎么找志同道合的伙伴