首先啊哈算法的链表建立简单易懂,是这样的
#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node *next;
};
int main()
{
struct node *head,*p,*q,*t;
int i,n,a;
scanf("%d",&n);
head=NULL;
for(i=1;i<=n;i++){
scanf("%d",&a);
p=(struct node *)malloc(sizeof(struct node));
p->data=a;
p->next=NULL;
if(head==NULL){
head=p;
else
q->next=p;
}
q=p;
}
return 0;
}
C编程书上的是这样的:
#include<stdio.h>
#include<stdlib.h>
struct student{
char name[20];
int number;
struct student *next;
};
int icount;
struct student *creat(){
struct student *phead=NULL;
struct student *pend,*pnew;
icount=0;
pend=pnew=(struct student *)malloc(sizeof(struct student));
printf("请输入学生的姓名和学号:\n");
scanf("%s",pnew->name);
scanf("%d",&pnew->number);
while(pnew->number!=0){
icount++;
if(icount==1){
pnew->next=phead;
pend=pnew;
phead=pnew;
}
else
{
pnew->next=NULL;
pend->next=pnew;
pend=pnew;
}
pnew=(struct student *)malloc(sizeof(struct student));
scanf("%s",pnew->name);
scanf("%d",&pnew->number);
}
free(pnew);
return phead;
}
void print(struct student *phead){
struct student *ptemp;
int i=1;
printf("***本名单有%d个学生***\n",icount);
ptemp=phead;
while(ptemp!=NULL){
printf("第%d个学生是:\n",i);
printf("姓名:%s\n",ptemp->name);
printf("学号:%d\n",ptemp->number);
ptemp=ptemp->next;
i++;
}
};
int main()
{
struct student *phead;
phead=creat();
print(phead);
}