#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(stu)
typedef struct stu
{
int num;
float score;
struct stu *next;
}stu;
int n;
stu *creat(void) //建立链表的函数
{
stu *head,*p1,*p2;
n=0;
p1=p2=(struct stu *)malloc(LEN);
scanf("%d %f",&p1->num,&p1->score);
head=NULL;
while(p1->num!=0)
{
n=n+1;
if (n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(stu *)malloc(LEN);
scanf("%d %f",&p1->num,&p1->score);
}
p2->next=NULL;
return(head);
}
void input(stu *obj) //插入节点的函数
{
stu *pre,*cur;
stu *head;
head=creat();
pre=head;
cur=head->next;
obj=(stu *)malloc(LEN);
scanf("%d %f",&obj->num,&obj->score);
while(cur)
{
if(obj->num < cur->num)
break;
obj->next=cur->next;
pre->next=obj;
};
pre=cur;
cur=cur->next;
}
void del(int id) //删除节点的函数
{
stu *head;
head=creat();
stu *pre,*cur;
pre=head;
cur=head->next;
while(cur)
{
if(cur->num==id)
{
pre->next=cur->next;
free(cur);
break;
}
pre=cur;
cur=cur->next;
}
}
/******************************** 函 数 声 明 *********************************************/
stu *creat(); //建立
void input(stu *obj);//插入
void del(int id);//删除
/******************************** 函 数 声 明 *********************************************/
void main()
{
stu *pt;
stu *obj=NULL;
int n;
pt=creat();
printf("请输入要插入的节点\n");
input(obj);
while(pt!=NULL)
{
printf("%d,%f\n",pt->num,pt->score);
pt=pt->next;
}
printf("\n");
}
为什么插入不了呀。删除怎么加呢
#include<stdlib.h>
#define LEN sizeof(stu)
typedef struct stu
{
int num;
float score;
struct stu *next;
}stu;
int n;
stu *creat(void) //建立链表的函数
{
stu *head,*p1,*p2;
n=0;
p1=p2=(struct stu *)malloc(LEN);
scanf("%d %f",&p1->num,&p1->score);
head=NULL;
while(p1->num!=0)
{
n=n+1;
if (n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(stu *)malloc(LEN);
scanf("%d %f",&p1->num,&p1->score);
}
p2->next=NULL;
return(head);
}
void input(stu *obj) //插入节点的函数
{
stu *pre,*cur;
stu *head;
head=creat();
pre=head;
cur=head->next;
obj=(stu *)malloc(LEN);
scanf("%d %f",&obj->num,&obj->score);
while(cur)
{
if(obj->num < cur->num)
break;
obj->next=cur->next;
pre->next=obj;
};
pre=cur;
cur=cur->next;
}
void del(int id) //删除节点的函数
{
stu *head;
head=creat();
stu *pre,*cur;
pre=head;
cur=head->next;
while(cur)
{
if(cur->num==id)
{
pre->next=cur->next;
free(cur);
break;
}
pre=cur;
cur=cur->next;
}
}
/******************************** 函 数 声 明 *********************************************/
stu *creat(); //建立
void input(stu *obj);//插入
void del(int id);//删除
/******************************** 函 数 声 明 *********************************************/
void main()
{
stu *pt;
stu *obj=NULL;
int n;
pt=creat();
printf("请输入要插入的节点\n");
input(obj);
while(pt!=NULL)
{
printf("%d,%f\n",pt->num,pt->score);
pt=pt->next;
}
printf("\n");
}
为什么插入不了呀。删除怎么加呢