69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef int DataType;
typedef struct
{
DataType data;
struct ListNode *next;
}ListNode,*LinkList;
LinkList InitList(LinkList head)
{
head = (ListNode *)malloc(sizeof(ListNode));
if(head == NULL)
exit(-1);
head->next = NULL;
printf("OK");
return head;
}
void main()
{
LinkList head = NULL;
ListNode *p;
head = InitList(head);
p = (ListNode *)malloc(sizeof(ListNode));
p->data = 100;
p->next = NULL;
head->next = p; //如果使用函数InitList(),就在运行到这里报错 内存不能written
if(head->next != NULL)
printf("NOT NULL");
else
printf("NULL");
}
//你的initList(LinkList head) 只是建立了head 的副本,真正的head
//并没有建立,给它赋值程序当然崩溃了。改成引用或指针的指针就可以了。
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef int DataType;
typedef struct ListNode
{
DataType data;
struct ListNode *next;
}*LinkList;//此处重复定义
void InitList(LinkList &head)//引用head。如果是c,用指针的指针。
{
head = (ListNode *)malloc(sizeof(ListNode));
if(head == NULL)
exit(-1);
head->next = NULL;
printf("OK\n");
}
void main()
{
LinkList head = NULL;
ListNode *p;
InitList(head);
p = (ListNode *)malloc(sizeof(ListNode));
p->data = 100;
p->next = NULL;
head->next = p;
if(head->next != NULL)
printf("NOT NULL\n");
else
printf("NULL");
}