#include "stdio.h"
#include "malloc.h"
struct student
{
long num;
float score;
struct student *next;
};
int n;
struct student *creat(void)
{
struct student *head,*p1,*p2;
n=0;
head=NULL;
p1=p2=(struct student *)malloc(sizeof(struct student));
scanf("%ld%f",&p1->num,&p1->score );
while(p1->num!=NULL)
{
n++;
if(n==1)
head=p1;
else
{
p2->next =p1;
}
p2=p1;
p1=(struct student *)malloc(sizeof(struct student));
scanf("%ld%f",&p1->num,&p1->score );
}
p2->next =NULL;
return(head);
}
void print(struct student *head)
{
struct student *p1;
printf("there are %d records:\n",n);
p1=head;
if(head!=NULL)
{
do
{
printf("%ld %f\n",p1->num,p1->score );
p1=p1->next ;
}while(p1!=NULL);
}
}
struct student *del(struct student *head,long num) //注意 当要删除步骤(delete)结束而进入插入元素的时候,只且仅需要输入0就可以了,否从,会出错!!
{
struct student *p1,*p2;
if(head==NULL) printf("no exist");
p1=head;
while(num!=p1->num &&p1->next !=NULL)
{
p2=p1;p1=p1->next;
}
if(num==p1->num )
{
if(p1==head)
head=p1->next;
else
p2->next =p1->next ;
n--;
printf("delete %ld\n",num);
}
else
printf("no exist");
return(head);
}
struct student *insert(struct student *head,struct student *stud)
{
struct student *p0,*p1,*p2;
p1=head;
p0=stud;
if(head==NULL)
{
head=p0;p0->next =NULL;
}
else
{
while(p0->num>=p1->num&&p1->next !=NULL )
{
p2=p1;p1=p1->next ;
}
if(p0->num<p1->num)
{
if(p1==head)
head=p0;
else
{
p2->next =p0;
p0->next =p1;
}
}
else
{
p1->next =p0;
p0->next =NULL;
}
n++;
}
return (head);
}
int main(int argc, char* argv[])
{
struct student *head,*stu;
long del_num;
printf("input records:\n");
head=creat();
print(head);
printf("\ninput the deleted number:");
scanf("%ld:",&del_num);
while(del_num!=0)
{
head=del(head,del_num);
print(head);
printf("\ninput the deleted number:");
scanf("%ld",&del_num);
}
printf("\ninput the inserted number:");
stu=(struct student *)malloc(sizeof(struct student));
scanf("%ld%f",&stu->num,&stu->score );
while(stu->num !=0)
{
head=insert(head,stu);
print(head);
printf("input the inserted record:");
stu=(struct student *)malloc(sizeof(struct student));
scanf("%ld%f",&stu->num,&stu->score );
}
return 0;
}
LinkList的新建,插入,删除等的实现
最新推荐文章于 2023-05-24 09:02:44 发布