#include <iostream>
#include<iomanip>
using namespace std;
struct student//定义结构体变量;
{
long int num;
double score;
student *next;
};
student *creatlink()//创建链表节点
{
student *p1,*p2,*p3,*head=NULL;//初始化头指针;
p1=new student;//动态申请内存,
cin>>p1->num>>p1->score;//输入结构体中的内容(为了好以0 0结束创建节点)
if(p1->num!=0&&p1->score!=0)
{
head=p1;
while(p1->num!=0&&p1->score!=0)//判断是不是0 0;
{
p2=new student;//再次申请内存。
p1->next=p2;
p3=p1;
cin>>p2->num>>p2->score;//输入数据
p1=p2;
}
p3->next=NULL;//尾指针置空。
}
else
head=NULL;
return head;
}
student *dellink(student *head,long m)
{
student *p=head,*p1;
while(p!=NULL)
{
if((p->num==m)&&(p==head))//如果要删除的节点在头上。
{
head=p->next;
break;
}
else if((p->num==m)&&(p->next==NULL))//删除的节点在结尾
{
p=NULL;
}
else
{
if(p->num!=m)//要删的节点在中间时判断是否是要删的节点
{
p1=p;
p=p->next;
}
else
{
p1->next=p->next;
break;
}
}
}
return head;
}
student *insertlink(student *head,student *stu)
{
student *p,*p1,*p3,*p2;
p=head;
p2=new student;//申请动态内存,为了将新的节点地址变化(如果不变第二次插入式会出错)
//cout<<p2<<endl;
p2->num=stu->num;//赋值,(也可以用结构体直接赋值)
p2->score=stu->score;
p2->next=stu->next;
p1=p2;
if(head==NULL)//判断链表是否为空
{
head=p1;
p1->next=NULL;
}
else
{
while(p->next->next!=NULL)
{
if((p->num<=p1->num)&&(p->next->num>=p1->num))//判断是否是要插入的位置(此处要求输入是按升序输入的,插入时按升序插入)
{
p3=p->next;
p->next=p1;
p1->next=p3;
break;
}
p=p->next;
}
//cout<<p->next->next<<endl;
if((p->num<=p1->num)&&(p->next->num>=p1->num))//由于判断结束的标志是p->next->next,所以还有两组数据还没比较。
{
p3=p->next;
p->next=p1;
p1->next=p3;
}
else if(p->next->num<=p1->num)
{
p->next->next=p1;
p1->next=NULL;
}
}
return head;
}
void printlink(student *head)
{
student *p=head;
while(p->next!=NULL)
{
cout<<p->num<<" "<<p->score<<endl;
p=p->next;
}
cout<<p->num<<" "<<p->score<<endl;
}
void freelink(student *head)
{
student *p=head,*p1;
while(p!=NULL)
{
p1=p->next;//存储下一个指针的内容
delete(p);//释放p的内存
p=p1;
}
delete(p);
}
int main()
{
student *creatlink(void);
student *dellink(student *,long);
student *insertlink(student *,student *);
void printlink(student *);
void freelink(student *);
student *head,stu;
long del_num;
head=creatlink();
cin>>del_num;
head=dellink(head,del_num);
cin>>stu.num>>stu.score;
head=insertlink(head,&stu);
cin>>stu.num>>stu.score;
head=insertlink(head,&stu);
cout<<setiosflags(ios::fixed);
cout<<setprecision(2);
printlink(head);
freelink(head);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxpb21hbmlwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3Qgc3R1ZGVudC8v5a6a5LmJ57uT5p6E5L2T5Y+Y6YeP77ybCnsKICAgIGxvbmcgaW50IG51bTsKICAgIGRvdWJsZSBzY29yZTsKICAgIHN0dWRlbnQgKm5leHQ7Cn07CnN0dWRlbnQgKmNyZWF0bGluaygpLy/liJvlu7rpk77ooajoioLngrkKewogICAgc3R1ZGVudCAqcDEsKnAyLCpwMywqaGVhZD1OVUxMOy8v5Yid5aeL5YyW5aS05oyH6ZKI77ybCiAgICBwMT1uZXcgc3R1ZGVudDsvL+WKqOaAgeeUs+ivt+WGheWtmO+8jAogICAgY2luPj5wMS0+bnVtPj5wMS0+c2NvcmU7Ly/ovpPlhaXnu5PmnoTkvZPkuK3nmoTlhoXlrrnvvIjkuLrkuoblpb3ku6UwIDDnu5PmnZ/liJvlu7roioLngrnvvIkKICAgIGlmKHAxLT5udW0hPTAmJnAxLT5zY29yZSE9MCkKICAgIHsKICAgICAgICBoZWFkPXAxOwogICAgICAgIHdoaWxlKHAxLT5udW0hPTAmJnAxLT5zY29yZSE9MCkvL+WIpOaWreaYr+S4jeaYrzAgMO+8mwogICAgICAgIHsKICAgICAgICAgICAgcDI9bmV3IHN0dWRlbnQ7Ly/lho3mrKHnlLPor7flhoXlrZjjgIIKICAgICAgICAgICAgcDEtPm5leHQ9cDI7CiAgICAgICAgICAgIHAzPXAxOwogICAgICAgICAgICBjaW4+PnAyLT5udW0+PnAyLT5zY29yZTsvL+i+k+WFpeaVsOaNrgogICAgICAgICAgICBwMT1wMjsKICAgICAgICB9CiAgICAgICAgcDMtPm5leHQ9TlVMTDsvL+WwvuaMh+mSiOe9ruepuuOAggogICAgfQogICAgZWxzZQogICAgICAgIGhlYWQ9TlVMTDsKICAgIHJldHVybiBoZWFkOwp9CnN0dWRlbnQgKmRlbGxpbmsoc3R1ZGVudCAqaGVhZCxsb25nIG0pCnsKICAgIHN0dWRlbnQgKnA9aGVhZCwqcDE7CiAgICB3aGlsZShwIT1OVUxMKQogICAgewogICAgICAgIGlmKChwLT5udW09PW0pJiYocD09aGVhZCkpLy/lpoLmnpzopoHliKDpmaTnmoToioLngrnlnKjlpLTkuIrjgIIKICAgICAgICB7CiAgICAgICAgICAgIGhlYWQ9cC0+bmV4dDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoKHAtPm51bT09bSkmJihwLT5uZXh0PT1OVUxMKSkvL+WIoOmZpOeahOiKgueCueWcqOe7k+WwvgogICAgICAgIHsKICAgICAgICAgICAgcD1OVUxMOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBpZihwLT5udW0hPW0pLy/opoHliKDnmoToioLngrnlnKjkuK3pl7Tml7bliKTmlq3mmK/lkKbmmK/opoHliKDnmoToioLngrkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcDE9cDsKICAgICAgICAgICAgICAgIHA9cC0+bmV4dDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHAxLT5uZXh0PXAtPm5leHQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBoZWFkOwp9CnN0dWRlbnQgKmluc2VydGxpbmsoc3R1ZGVudCAqaGVhZCxzdHVkZW50ICpzdHUpCnsKICAgIHN0dWRlbnQgKnAsKnAxLCpwMywqcDI7CiAgICBwPWhlYWQ7CglwMj1uZXcgc3R1ZGVudDsvL+eUs+ivt+WKqOaAgeWGheWtmO+8jOS4uuS6huWwhuaWsOeahOiKgueCueWcsOWdgOWPmOWMlu+8iOWmguaenOS4jeWPmOesrOS6jOasoeaPkuWFpeW8j+S8muWHuumUme+8iQoJLy9jb3V0PDxwMjw8ZW5kbDsKCXAyLT5udW09c3R1LT5udW07Ly/otYvlgLzvvIzvvIjkuZ/lj6/ku6XnlKjnu5PmnoTkvZPnm7TmjqXotYvlgLzvvIkKCXAyLT5zY29yZT1zdHUtPnNjb3JlOwoJcDItPm5leHQ9c3R1LT5uZXh0OwogICAgcDE9cDI7CiAgICBpZihoZWFkPT1OVUxMKS8v5Yik5pat6ZO+6KGo5piv5ZCm5Li656m6CiAgICB7CiAgICAgICAgaGVhZD1wMTsKICAgICAgICBwMS0+bmV4dD1OVUxMOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIHdoaWxlKHAtPm5leHQtPm5leHQhPU5VTEwpCiAgICAgICAgewogICAgICAgICAgICBpZigocC0+bnVtPD1wMS0+bnVtKSYmKHAtPm5leHQtPm51bT49cDEtPm51bSkpLy/liKTmlq3mmK/lkKbmmK/opoHmj5LlhaXnmoTkvY3nva7vvIjmraTlpITopoHmsYLovpPlhaXmmK/mjInljYfluo/ovpPlhaXnmoTvvIzmj5LlhaXml7bmjInljYfluo/mj5LlhaXvvIkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcDM9cC0+bmV4dDsKICAgICAgICAgICAgICAgIHAtPm5leHQ9cDE7CiAgICAgICAgICAgICAgICBwMS0+bmV4dD1wMzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHA9cC0+bmV4dDsKICAgICAgICB9CgkJLy9jb3V0PDxwLT5uZXh0LT5uZXh0PDxlbmRsOwoJCWlmKChwLT5udW08PXAxLT5udW0pJiYocC0+bmV4dC0+bnVtPj1wMS0+bnVtKSkvL+eUseS6juWIpOaWree7k+adn+eahOagh+W/l+aYr3AtPm5leHQtPm5leHTvvIzmiYDku6Xov5jmnInkuKTnu4TmlbDmja7ov5jmsqHmr5TovoPjgIIKCQl7CgkJCXAzPXAtPm5leHQ7CgkJCXAtPm5leHQ9cDE7CgkJCXAxLT5uZXh0PXAzOwoJCX0KICAgICAgIGVsc2UgaWYocC0+bmV4dC0+bnVtPD1wMS0+bnVtKQogICAgICAgIHsKICAgICAgICAgICAgcC0+bmV4dC0+bmV4dD1wMTsKICAgICAgICAgICAgcDEtPm5leHQ9TlVMTDsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gaGVhZDsKfQp2b2lkIHByaW50bGluayhzdHVkZW50ICpoZWFkKQp7CiAgICBzdHVkZW50ICpwPWhlYWQ7CiAgICB3aGlsZShwLT5uZXh0IT1OVUxMKQogICAgewogICAgICAgIGNvdXQ8PHAtPm51bTw8IiAiPDxwLT5zY29yZTw8ZW5kbDsKICAgICAgICBwPXAtPm5leHQ7CiAgICB9CiAgICBjb3V0PDxwLT5udW08PCIgIjw8cC0+c2NvcmU8PGVuZGw7Cn0Kdm9pZCBmcmVlbGluayhzdHVkZW50ICpoZWFkKQp7CiAgICBzdHVkZW50ICpwPWhlYWQsKnAxOwogICAgd2hpbGUocCE9TlVMTCkKICAgIHsKICAgICAgICBwMT1wLT5uZXh0Oy8v5a2Y5YKo5LiL5LiA5Liq5oyH6ZKI55qE5YaF5a65CiAgICAgICAgZGVsZXRlKHApOy8v6YeK5pS+cOeahOWGheWtmAogICAgICAgIHA9cDE7CiAgICB9CiAgICBkZWxldGUocCk7Cn0KaW50IG1haW4oKQp7CiAgICBzdHVkZW50ICpjcmVhdGxpbmsodm9pZCk7CiAgICBzdHVkZW50ICpkZWxsaW5rKHN0dWRlbnQgKixsb25nKTsKICAgIHN0dWRlbnQgKmluc2VydGxpbmsoc3R1ZGVudCAqLHN0dWRlbnQgKik7CiAgICB2b2lkIHByaW50bGluayhzdHVkZW50ICopOwogICAgdm9pZCBmcmVlbGluayhzdHVkZW50ICopOwogICAgc3R1ZGVudCAqaGVhZCxzdHU7CiAgICBsb25nIGRlbF9udW07CiAgICBoZWFkPWNyZWF0bGluaygpOwogICAgY2luPj5kZWxfbnVtOwogICAgaGVhZD1kZWxsaW5rKGhlYWQsZGVsX251bSk7CiAgICBjaW4+PnN0dS5udW0+PnN0dS5zY29yZTsKICAgIGhlYWQ9aW5zZXJ0bGluayhoZWFkLCZzdHUpOwogICAgY2luPj5zdHUubnVtPj5zdHUuc2NvcmU7CiAgICBoZWFkPWluc2VydGxpbmsoaGVhZCwmc3R1KTsKICAgIGNvdXQ8PHNldGlvc2ZsYWdzKGlvczo6Zml4ZWQpOwogICAgY291dDw8c2V0cHJlY2lzaW9uKDIpOwogICAgcHJpbnRsaW5rKGhlYWQpOwogICAgZnJlZWxpbmsoaGVhZCk7CiAgICByZXR1cm4gMDsKfQ==