C++ 建立一个职员的工作链表,编写函数del,能删除节点,并且增加功能:按工号num1修改员工的工资wage。

#include<iostream>usingnamespacestd;structstaff{longnum;charname[20];doublewage;struc... #include <iostream>
using namespace std;
struct staff
{
long num;
char name[20];
double wage;
struct staff *next;
};
struct staff *del(staff *head,long num)
{
struct staff *p,*q;
if(head==NULL)
cout<<"list null!"<<endl;
else
{
p=head;
while(num!=p->num&&p->next!=NULL)
{
q=p;
p=p->next;
}
if(num==p->num)
{
if(p==head)
head=p->next;
else
q->next=p->next;
delete p;
}
else
cout<<num<<"not been found!"<<endl;
}
return(head);
}
void main()
{
int n;
staff *head=NULL,*newnode,*tail=NULL;
cout<<"请输入初始的节点数"<<endl;
cin>>n;
cout<<"input num, name and wage"<<endl;
for(int i=0;i<n;i++)
{
newnode=new staff;
cin>>newnode->num>>newnode->name>>newnode->wage;
if(head==NULL)
head=newnode;
else
tail->next=newnode;
tail=newnode;
}
tail->next=NULL;
cout<<"请输入所要删除的员工工号:"<<endl;
long num,num1;
cin>>num;
double change;
head=del(head,num);
cout<<"请输入需要修改工资的员工工号:"<<endl;
cin>>num1;
cout<<"请输入修改后的工资值:"<<endl;
cin>>change;
staff *q=head;
while(q!=NULL)
{
if(q->num==num1)
q->wage=change;
else
q=q->next;}
staff *p=head;
while(p!=NULL)
{
cout<<p->num<<" "<<p->name<<" "<<p->wage<<endl;
p=p->next;
}
}

求改错。。。谢谢
展开
 我来答
厚如云0ae
2011-05-29 · TA获得超过157个赞
知道答主
回答量:51
采纳率:0%
帮助的人:49.9万
展开全部
创建链表时:if(head==NULL) head=newnode;改为if(head==NULL){head=newnode;tail=head;}
修改工资处:if(q->num==num1) q->wage=change;改为if(q->num==num1) {q->wage=change;break;}
改完后运行无错误
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式