#include<iostream>
using namespace std;
#define NULL 0
struct student
{long num;
float score;
student *next;//定义了一个结构体指针
};
int n;
student *del(student *head,long num)//定义了一个指针,该指针的形参有结构体的头指针和长整形变量
{student *p1,*p2;
if(head==NULL)//如果头为空
{cout<<"list null!"<<endl;return(head);}//则输出该表为空的文本,再返回值头
p1=head;
while(num!=p1->num&&p1->next!=NULL)//学号不等于p1指针所指向的学号或者p1所指向的后集节点不等于空
{p2=p1;p1=p1->next;}//那么p1指针赋值给p2,然后p1等于其后继节点
if(num==p1->num)//如果学号等于p1所指向的学号
{if(p1==head)head=p1->next;//那么,接着又如果,p1若是等于头结点,那么头结点就等于p1的后继节点。
else p2->next=p1->next;//否则,p2的后继节点等于p1的后继节点
cout<<"delete:"<<num<<endl;//输出,删除的数字。
n=n-1;//n-1赋值给n
}
else cout<<"cannot find"<<num;//否则输出无法找到
return(head);//返回头结点
}