LinkNode *h=NULL;h只是一个指针,没有存储空间,使用h->data必定出错。还有就是指针h的值为NULL,一个空指针不能使用h->data,用必定导致运行错误!!
24行,if(head=NULL)必须少了一个等号,应该为if(head==NULL),最好改为if (NULL == head)
这样的问题多多练习就好了。
//改了的
#include
#include
#define n 6
using namespace std;
typedef struct LinkNode
{
LinkNode *next;
int data;
}LinkNode;
LinkNode * Creatlist()
{
LinkNode *temp=NULL,*head,*tail;
head=tail=NULL;
int i(0);
for(i=0;i
temp=(LinkNode*)malloc(sizeof(LinkNode));
if(!temp)
{
exit(0);
}
temp->data=i;
temp->next=NULL;
if(head==NULL)//双等号
head=tail=temp;//tail也要赋值
else
{
tail->next=temp;
tail=temp;
}
}
return head;
}
void Insert(LinkNode *h,LinkNode *s)
{
LinkNode *p,*q;
q=h;
p=h->next;
while(p)
{
if(p->data>s->data)
{
q->next=s;
s->next=p;
return;
}
else
{
q=p;
p=p->next;
}
}
s->next=q->next;
q->next=s;
p=h;
}
int main()
{
LinkNode *h=NULL,*g=NULL;
h = (LinkNode*)malloc(sizeof(LinkNode));
h->data=3;//指针必须申请内存才能对其成员变量赋值
g=Creatlist();
Insert(g,h);
return(0);
}
int main()
{
LinkNode *h=NULL,*g=NULL;
h->data=3;
g=Creatlist();
Insert(g,h);
return(0);
}代码有问题 你必须先为你的指针申请空间才能赋值 是吧 所以你的顺序就不对
LinkNode *h=NULL;
h->data=3;
可能吗?