Justin1 发表于 2020-11-1 11:15:06

使用typedef的一些问题

本帖最后由 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;
}

jackz007 发表于 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)                                        ;
}

永恒的蓝色梦想 发表于 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;
}

永恒的蓝色梦想 发表于 2020-11-1 12:59:12

jackz007 发表于 2020-11-1 12:17


为什么要分号对齐……?

jackz007 发表于 2020-11-1 13:11:42

永恒的蓝色梦想 发表于 2020-11-1 12:59
为什么要分号对齐……?

      不为别的,只是为了整齐好看!

小甲鱼的铁粉 发表于 2020-11-1 15:15:01

jackz007 发表于 2020-11-1 13:11
不为别的,只是为了整齐好看!

{:10_250:}

lhgzbxhz 发表于 2020-11-1 15:32:01

第6行ListNode* next;
此时ListNode都还没有被typedef过,编译器不知道ListNode是什么
建议这样:typedef struct ListNode
{
...
}ListNode;
页: [1]
查看完整版本: 使用typedef的一些问题