鱼C论坛

 找回密码
 立即注册
查看: 1049|回复: 6

[已解决]使用typedef的一些问题

[复制链接]
发表于 2020-11-1 11:15:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Justin1 于 2020-11-1 11:16 编辑

我这段程序到底是什么问题呢?
网上搜索了下也有点云里雾里。
#include <stdio.h>
#include <stdlib.h>

typedef struct {
    int data;
    ListNode* next;
}ListNode;

void printNode(ListNode* l1);

void printNode(ListNode* l1) {
    while (l1 != NULL) {
        printf("%d\n", l1->data);
        l1 = l1->next;
    }
}

int main() {
    ListNode* l1 = (ListNode*)malloc(sizeof(ListNode*));
    l1->data = 0;
    l1->next = NULL;
    ListNode* p = l1;
    ListNode* q;
    int i = 1;
    for (i; i <= 10; i++) {
        q = (ListNode*)malloc(sizeof(ListNode*));
        q->data = i;
        p->next = q;
        p = p->next;
    }
    printNode(l1);
    return 0;
}
Screenshot 2020-11-01 111601.png
最佳答案
2020-11-1 15:32:01
第6行
ListNode* next;
此时ListNode都还没有被typedef过,编译器不知道ListNode是什么
建议这样:
typedef struct ListNode 
{
...
}ListNode;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-1 12:17:17 | 显示全部楼层
本帖最后由 jackz007 于 2020-11-1 12:42 编辑
#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data                                                ;
    struct Node * next                                      ;
} ListNode                                                  ;

void printNode(ListNode * l1)
{
        while(l1) {
                printf("%d\n" , l1 -> data)                 ;
                l1 = l1 -> next                             ;
        }
}

int main()
{
        ListNode * l1 , * p , * q                            ;
        for (int i = 0 ; i <= 10 ; i ++) {
                q = (ListNode *)malloc(sizeof(ListNode))     ;
                q -> data = i                                ;
                q -> next = NULL                             ;
                if(i) p -> next = q                          ;
                else l1 = q                                  ;
                p = q                                        ;
        }        
        printNode(l1)                                        ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-1 12:47:09 | 显示全部楼层
#include<stdio.h>
#include<stdlib.h>



typedef struct ListNode{
    int data;
    struct ListNode* next;
}ListNode;



void printNode(ListNode* l1) {
    while (l1 != NULL) {
        printf("%d\n", l1->data);
        l1 = l1->next;
    }
}



int main() {
    ListNode* l1 = (ListNode*)malloc(sizeof(ListNode));
    l1->data = 0;
    l1->next = NULL;
    ListNode* p = l1, * q;


    for (int i = 1; i <= 10; i++) {
        q = (ListNode*)malloc(sizeof(ListNode));
        q->data = i;
        p->next = q;
        p = p->next;
    }

    p->next = NULL;
    printNode(l1);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-1 12:59:12 | 显示全部楼层

为什么要分号对齐……?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-1 13:11:42 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-11-1 12:59
为什么要分号对齐……?

      不为别的,只是为了整齐好看!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-1 15:15:01 | 显示全部楼层
jackz007 发表于 2020-11-1 13:11
不为别的,只是为了整齐好看!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-1 15:32:01 | 显示全部楼层    本楼为最佳答案   
第6行
ListNode* next;
此时ListNode都还没有被typedef过,编译器不知道ListNode是什么
建议这样:
typedef struct ListNode 
{
...
}ListNode;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 19:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表