菜鸟求高手指教

时间:2022-07-25 19:42:17
#include<iostream>
#include<string>
using namespace std;
struct person
{
int num;
float salary;
person *next;
};
person * Createlist(void);
void printList(person *head);
person *ListDelet(person *head,int num);
person *ListInsert(person *head,person *ps);
void ListSearch (person *head,int num);
person *Createlist(void)
{
    person *head;
    person *rear;
    person * p;
    head =NULL;
    int no;
    cout<<"\n输入一个职工号,输入0结束.";
    cin>>no;
    while (no!=0)
    {
        p=new person;
        p->num=no;
        cout<<"\n输入一个职工的工资";
        cin>>p->salary;
        if(head==NULL)head=p;
        else rear->next=p;
        rear=p;
        cout<<"\n输入一个职工号,输入0结束.";
        cin>>no;
    }
    if(rear!=NULL)
rear->next=NULL;
    cout<<"\n链表建立结束!";
    return head ;
}

void printList(person *head)
{
    person *p=head;
    while (p!=NULL)
    {
        cout<<p->num<<" "<<p->salary<<endl;
        p=p->next;
    }
}
person *ListInsert(person *head,person *ps)
{
    if(head==NULL)
    {
        head=ps;
        cout<<head->num;
        return head;

    }
    if(head->num>ps->num)
    {
        ps->next=head;
        head=ps;
        return head;
    }
    person *p,*q;
    p=q=head;
    while(p!=NULL&&p->num<ps->num)
    {
        q=p;
        p=p->next;

    }
    q->next=ps;
    ps->next=p;
    return head ;
}

person *ListDelet(person *head,int num)
{
    person *p,*q;
    if(head->num==num)
    {
        p=head;
        head=p->next;
        delete p;
        return head ;
    }
    q=p=head;
    while(p!=NULL  && p->num!=num)
    {
        q=p;
        p=p->next;

    }
    if(p!=NULL)
    {
        q->next=p->next;
        delete p;
        return head;

    }
    cout<<num<<"is not found \n";
    return head ;
}
int  main ()
{
    int sn, num;
    person *head,ps;
    for(;;){
cout<<"            职工信息管理系统\n";
cout<<"=====================================\n";
cout<<"1  职工信息链表的建立\n";
cout<<"2  职工信息链表结点的插入\n";
cout<<"3  职工信息链表结点的删除\n";
cout<<"4  职工信息链表结点的查询\n";
cout<<"5  职工信息链表的输出\n";
cout<<"0  退出职工信息管理系统\n";
cout<<" =====================================\n";
cout<<"请选择0-5: \n";
for(;;)
{
cin>>sn;
if(sn<0||sn>5)
cout<<"\n\t输入错误,重选0-5:";
else
break ;
}
        switch (sn)
        {
case 1:cout<<"职工信息链表的建立\n";
            head=Createlist();
            break;
case 2:cout<<"职工信息结点的插入\n";
            cout<<"输入要插入的职工的工号及工资:";
            cin>>ps.num>>ps.salary;
            head=ListInsert(head,&ps);
            break;
case 3:cout<<"职工结点的删除\n";
            cout<<"输入要删除职工的工号:";
            cin>>num;
            head=ListDelet(head,num);
            break;
case 4:
            cout<<"职工结点的查询\n";
            cout<<"输入要查询的职工 工号:";
            cin>>num;
            ListSearch(head,num);
            break;
case 5:
            printList(head);
            break;
case 0:
            cout<<"职工信息链表的输出\n";
            printList(head);
            return 0;

        }

    }
}
这个
void ListSearch (person *head,int num);函数该怎么写,num仅能是8位数字,如何变成11位,职工信息又如何被别的函数调用刚接触C++请各位高手指教

6 个解决方案

#1


8位变成11位?什么意思?职工信息作为参数传递给别人访问。

#2


员工号要能是11位数字的,怎样将职工信息作为参数传递给别人访问,请指教谢谢

#3


int型为32位,31位可用。

#4


如果你觉得int型满足不了你的要求,那你就换成char型数组来做。做参数传递你不会?int fun(int a)这里的a就是参数啊

#5


引用 2 楼  的回复:
员工号要能是11位数字的,怎样将职工信息作为参数传递给别人访问,请指教谢谢
你指的是11数字还是数字的11位?你定义了int类型了,32位的!而且都是0,1数据组成,如果你指的的数据一共有11位,那就用字符类型存储,这样方便!!!!

#6


用字符数组存储吧

#1


8位变成11位?什么意思?职工信息作为参数传递给别人访问。

#2


员工号要能是11位数字的,怎样将职工信息作为参数传递给别人访问,请指教谢谢

#3


int型为32位,31位可用。

#4


如果你觉得int型满足不了你的要求,那你就换成char型数组来做。做参数传递你不会?int fun(int a)这里的a就是参数啊

#5


引用 2 楼  的回复:
员工号要能是11位数字的,怎样将职工信息作为参数传递给别人访问,请指教谢谢
你指的是11数字还是数字的11位?你定义了int类型了,32位的!而且都是0,1数据组成,如果你指的的数据一共有11位,那就用字符类型存储,这样方便!!!!

#6


用字符数组存储吧