}
p1=head; //使p1指向第一个结点 if(head==NULL) //原来的链表是空表
{head=p0;p0->next=NULL;} //使p0指向的结点作为头结点 if(p0->get_num()
{while((p0->get_num()>p1->get_num()) && (p1->next!=NULL)) {p2=p1; //使p2指向刚才p1指向的结点 p1=p1->next;} //p1后移一个结点 if(p0->get_num()<=p1->get_num())
{if(head==p1) head=p0; //插到原来第一个结点之前 else p2->next=p0; //插到p2指向的结点之后 p0->next=p1;} else
{p1->next=p0; p0->next=NULL;}} //插到最后的结点之后
count++;
cout<<\添加成功,查看请选择[2]\ cout<<\
return head;}
Zhuhu *shanchu(Zhuhu *head) {Zhuhu *p1,*p2; int num;
cout<<\请输入要删除住户的房号:\cin>>num; p1=head;
if (head==NULL) //是空表 {cout<<\
16
p1=head; //使p1指向第一个结点
while(num!=p1->get_num() && p1->next!=NULL) //p1指向的不是所要找的结点且后面还有结点
{p2=p1; p1=p1->next;} //p1后移一个结点 if(num==p1->get_num()) //找到了 {cout<<\您要删除住户的详细信息是:\p1->show_message();
if(p1==head) head=p1->next; //若p1指向的是首结点,把第二个结点地址赋予head
else p2->next=p1->next; //否则将下一结点地址赋给前一结点地址 cout<<\成功删除:\count--; }
else cout<<\您要删除的住户不存在,请核对后重新删除\ //找不到该结点
return (head); }
void zhixing(Zhuhu *head) {int num; Zhuhu *p1,*p2;
cout<<\请输入要执行的住户编号\cin>>num; p1=head;
while(num!=p1->get_num() && p1->next!=NULL) //p1指向的不是所要找的结点且后面还有结点
{p2=p1; p1=p1->next;} //p1后移一个结点 if(num==p1->get_num()) //找到了 {p1->gongneng(); }
17
else cout<<\您要执行的住户不存在,请核对后重新执行\找不到该结点 }
void chaxun(Zhuhu *head)//查询功能函数 {
string n; int num; char name[20];
cout<<\●水量和电量查询-[1]●物业费缴纳情况查询-[2]●\cin>>n;
while(n!=\{cout<<\错误命令,重新输入:\cin>>n; }
if(n==\ {
cout<<\●按房号查询-[1]●按户主查询-[2]●\string s; cin>>s;
while(s!=\
{cout<<\错误命令,重新输入:\cin>>s; }
if(s==\ {
cout<<\请输入您要查询的房号:\ cin>>num; Zhuhu *p1,*p2; p1=head;
while(num!=p1->get_num() && p1->next!=NULL) //p1指向的不是所
18
要找的结点且后面还有结点
}
{
{
p2=p1; p1=p1->next;
} //p1后移一个结点
if(num==p1->get_num()) //找到了
cout<<\您的水量是:\ cout<<\您的电量是:\
else cout<<\您要执行的住户不存在,请核对后重新执行\找
不到该结点
}
if(s==\ {
cout<<\请输入您要查询的户主姓名:\cin>>name; Zhuhu *p1,*p2; p1=head;
while(name!=p1->get_name() && p1->next!=NULL) //p1指向的不是
所要找的结点且后面还有结点
{
p2=p1; p1=p1->next;
} //p1后移一个结点
if(name==p1->get_name()) //找到了 { }
cout<<\您的水量是:\ cout<<\您的电量是:\
19
else cout<<\您要执行的住户不存在,请核对后重新执行\找
不到该结点
}
;}
if(n==\
{ Zhuhu *p1;
string k;
cout<<\●查询已交纳住户-[1]●查询未交纳住户[2]●\ cin>>k;
while(k!=\ { cout<<\错误命令,重新输入:\ cin>>k;
} p1=head;
if(k==\ {
while( p1!=NULL) //p1指向的不是所要找的结点且后面还有结
{
if(p1->get_wuye()>0 )
cout<<\警告!!房号:\主:\未交纳:\
p1=p1->next;
} //p1后移一个结点
} p1=head;
int g=0;
户
20