心之火 发表于 2022-1-27 17:38:44

求大佬们解答, 单链表方面的

#include<stdio.h>
#include<stdlib.h>

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

typedef struct Node Node;
typedef struct Node *LinkList;

// 单链表的创建
void InitList(LinkList *L) {
LinkList p;
p = (*L);
p = (LinkList)malloc(sizeof(Node));
p->data = "Good";
p->next = NULL;
printf("p->data: %s\n", p->data);
printf("*L->data: %s\n", (*L)->data);                                                                        // 错误行, 为什么输出(*L)->data会错误呢, p和传递过来的(*L)指向的不是同一个吗
printf("单链表创建成功\n");
return 0;
}

int main() {
LinkList L;   // 创建一个头指针
InitList(&L);
printf("L->data: %s", L->data);                                                                                        // 这里也是, 明明传递过去的是头指针的地址啊, InitList函数执行完后, L就会被改变的
return 0;
}

傻眼貓咪 发表于 2022-1-27 22:46:52

本帖最后由 傻眼貓咪 于 2022-1-28 10:05 编辑

#include <stdio.h>
#include <malloc.h>

typedef struct Node{
        int data; // 请记得你声明 data 是整数类型
        struct Node* next;
}LinkList;

void InitList(LinkList* L)
{
        LinkList *p;
        p = (LinkList*)malloc(sizeof(LinkList)); // 注意这里
        p->data = 13; // 整数
        p->next = NULL;
        *L = *p; // 注意这里,顺序
        printf("p->data: %d\n", p->data);
        printf("L->data: %d\n", L->data); // 注意这里
        printf("单链表创建成功\n");
}

int main(){
        LinkList head;
        InitList(&head);
        printf("head.data: %d", head.data); // 注意这里
        return 0;
}
页: [1]
查看完整版本: 求大佬们解答, 单链表方面的