习题7.8编写一个函数del,用来删除动态链表中一个指定的结点(由实参指定某一学号,表示要删除该学生结点)。

#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);//返回头结点 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值