无头结点删除相应的年龄

#include<stdio.h>
 #include<malloc.h>
 typedef struct StudentType
 {
  int age;
  char name[20];
  struct StudentType *next;
 }*Linklist,Link;
Linklist Build(int n);
 Linklist Delete(Linklist head,int n,int m);
 void Print(Linklist head);
 int main()
 {
  Linklist head=NULL,first=NULL;
  int n,m;
  printf("请输入要输入的总人数:\n");
  scanf("%d",&n);
  head=Build(n);
  Print(head);
  printf("请输入要删除的年龄:\n");
  scanf("%d",&m);
  first=Delete(head,n,m);
  Print(first);
  return 0;
 }
Linklist Build(int n)
 {
  int i;
  Linklist first=NULL,head=NULL,p=NULL;
  head=(Linklist)malloc(sizeof(Link));
  head->next=NULL;
  p=head;
scanf("%d%s",&p->age,p->name);
if(n>1)
{
for(i=1;i<n;i++)
{
first=(Linklist)malloc(sizeof(Link));
scanf("%d%s",&first->age,first->name);
first->next=p;
p=first;
}
}
return p;

 }
 Linklist Delete(Linklist head,int n,int m)
 {
  int count=0;
  int flag=0;
  Linklist ptr=head,first=NULL,p=NULL;
  if(ptr->age==m)
{

while(ptr->age==m&&ptr->next!=NULL)
  {
  count++;
  flag=1;
  p=ptr;
  ptr=ptr->next;
  head=ptr;
  free(p);
}
if(ptr->next==NULL&&ptr->age==m)
{
count++;
flag=1;
free(ptr);
head=NULL;
}
}
else
{
ptr=head->next;
first=head;
while(ptr->next!=NULL)
{
if(ptr->age==m)
{
p=ptr;
first->next=ptr->next;
free(p);
ptr=ptr->next;
flag=1;
count++;
}
else
{
ptr=ptr->next;
first=first->next;
}
}
if(ptr->age==m)
{
flag=1;
first->next=NULL;
count++;
}
}
if(count==n) head=NULL;
if(flag==1)
printf("delete successfully!\n");
else printf("not found\n");
return head;

 }
 void Print(Linklist head)
 {
  Linklist p=head;
  if(head==NULL) printf("无数据\n");
  else
  {
  while(p!=NULL)
  {
  printf("%d\n%s\n",p->age,p->name);
  p=p->next;
}
}
 
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值