问一个自定义链表的问题,马上给分◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
我自己写了一个简单的链表,但是为什么总不能把在main中生成的node插入到链表中,这是为什么,请看:
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<string.h>
struct PCB
{
char name[30];
int number;
};
struct Node
{
PCB* plink;
Node* next;
};
Node* create(Node *head)
{
head->next=NULL;
head->plink=NULL;
return (head);
}
Node* createNewNode()
{
Node * newNode;
newNode=(Node *)malloc(sizeof(Node));
newNode->plink=(PCB *)malloc(sizeof(PCB));
char tempname[30]={'t','e','m','p','n','o','d','e'};
strcpy(newNode->plink->name,tempname);
//newNode->plink->name='aa';
newNode->plink->number=2;
newNode->next=NULL;
return newNode;
}
void AddNodes(Node *head, int n)
{
Node *p,*q;
q=head;
for (int i=1;i<=n;i++)
{
p=(Node *)malloc(sizeof(Node));
p->plink=(PCB *)malloc(sizeof(PCB));
cout<<"Set name and number"<<endl;
cin>>p->plink->name>>p->plink->number;
q->next=p;
q=p;
}/*endfor*/
p->next=NULL;
}
Node* create(Node *head,int n)
{
int i;
Node *p,*q;
if (n==0)
{
head->next=NULL;
head->plink=NULL;
return (head);
}/*endif*/
q=head;
for (i=1;i<=n;i++)
{
p=(Node *)malloc(sizeof(Node));
p->plink=(PCB *)malloc(sizeof(PCB));
cout<<"Set name and number"<<endl;
cin>>p->plink->name>>p->plink->number;
q->next=p;
q=p;
}/*endfor*/
p->next=NULL;
return(head);
}
void AddNodeToList(Node *head, Node *newNode)
{
Node *p;
p=head->next;
while(p != NULL)
{
p=p->next;
}
p=newNode;
p->next=NULL;
}
int getSize(Node *head)
{
Node * p = head->next;
int i = 0;
while(p != NULL)
{
i++;
p=p->next;
}
return i;
}
void print(Node *head)
{
Node *p = head->next;
if (p == NULL)
{
return;
}
while(p!= NULL)
{
cout<<p->plink->name<<" "<<p->plink->number<<endl;
p=p->next;
}
}
void main()
{
Node* a;
a=(Node *)malloc(sizeof(Node));
create(a);
int size = getSize(a);
cout<<"size= "<<size<<endl;
Node *temp;
//temp=(Node *)malloc(sizeof(Node));
temp=createNewNode();
AddNodeToList(a,temp);
size = getSize(a);
cout<<"size= "<<size<<endl;
print(a);
}
两个输出都是0,不知道为什么,请指教!