简单的数据结构应用,不多说,看程序!!!哈!!!
希望对你能有帮助!!!
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<malloc.h>
#include<algorithm>
using namespace std;
#define LEN sizeof(struct Worker)
struct Worker{
char name[20];//姓名!
char department[20];//单位
char sex;//性别!
int age;//年龄!
long telephone;//电话!
double wage;//工资!
long num;//职工号!
struct Worker *next;
};
struct Worker *CreatInformation()
{
struct Worker *head,*p1;
int n,i;
head=p1=(struct Worker*)malloc(LEN);
printf("请输入你要存储员工的个数:\n");
cin>>n;
i=n;
while(n--)
{
printf("姓名 单位 性别 年龄 电话 工资 职工号\n");
scanf("%s %s %c %d %ld %lf %ld",&p1->name,&p1->department,&p1->sex,&p1->age,&p1->telephone,&p1->wage,&p1->num);
p1->next=(struct Worker*)malloc(LEN);
if(n>=0)
p1=p1->next;
}
p1->next=NULL;
return head;
}
int main()
{
void InsertData(struct Worker *A);
void DeleteData(struct Worker *B);
void CorrectData(struct Worker *C);
void SortData(struct Worker *D);
void PrintData(struct Worker *E);
void AverWage(struct Worker *F);
struct Worker *pt;
printf("欢迎使用本员工管理系统,请输入数据:\n");
printf("----------------------------------------------------------------\n");
pt=CreatInformation();
if(pt)
printf(" 员工信息已经存储成功,请选择你要进行的操作:\n");
else
printf(" 员工信息已经存储失败!请重新存储\n");
printf("----------------------------------------------------------------\n");
printf(" 其中插入数据请按“0”:\n");
printf(" 其中删除数据请按“1”:\n");
printf(" 其中修改数据请按“2”:\n");
printf(" 其中数据排序请按“3”:\n");
printf(" 其中打印数据请按“4”:\n");
printf(" 其中数据平均请按“5”:\n");
printf("----------------------------------------------------------------\n");
int ch=0,mark=1;
while(mark!=0)
{
cin>>ch;
switch(ch)
{case 0:InsertData(pt);break;
case 1:DeleteData(pt);break;
case 2:CorrectData(pt);break;
case 3:SortData(pt);break;
case 4:PrintData(pt);break;
case 5:AverWage(pt);break;
default: printf("error\n请重新选择\n");
}
printf("请选择您是否要继续进行操作,如果要继续进行操作,请输入任一非零数,如果要结束请按“0”\n");
cin>>mark;
printf("----------------------------------------------------------------\n");
printf(" 其中插入数据请按“0”:\n");
printf(" 其中删除数据请按“1”:\n");
printf(" 其中修改数据请按“2”:\n");
printf(" 其中数据排序请按“3”:\n");
printf(" 其中打印数据请按“4”:\n");
printf(" 其中数据平均请按“5”:\n");
printf("----------------------------------------------------------------\n");
}
return 0;
}
void DeleteData(struct Worker *B)//删除数据
{ int n1,n2=1;
struct Worker *q1,*q2;
q1=B;
printf("请输入要删除的员工职工号:\n");
cin>>n1;
if(B->num==n1)
{
B=B->next;
n2=0;
}
while(q1->num!=n1&&n2!=0)
{q2=q1;
q1=q1->next;
}
if(n2)
q2->next=q1->next;
printf("元素删除成功\n");
}
void InsertData(struct Worker *A)//插入数据
{
struct Worker *q1,*q2;
q1=A;
while(q1!=NULL)
{q2=q1;
q1=q1->next;
}
q2->next=(struct Worker*)malloc(LEN);
q1=q2->next;
q1->next=NULL;
printf(" 请输入你要插入的数据的相关信息\n");
printf("姓名 单位 性别 年龄 电话 工资 职工号\n");
scanf("%s %s %c %d %ld %lf %ld",&q2->name,&q2->department,&q2->sex,&q2->age,&q2->telephone,&q2->wage,&q2->num);
printf("数据插入成功\n");
}
void CorrectData(struct Worker *C)//修改数据
{ int n;
struct Worker *q;
q=C;
printf("请输入要修改的员工的职工号:");
cin>>n;
while(q->num!=n)
q=q->next;
printf(" 请输入你要修改的员工的相关信息\n");
printf("姓名 单位 性别 年龄 电话 工资 职工号\n");
scanf("%s %s %c %d %ld %lf %ld",&q->name,&q->department,&q->sex,&q->age,&q->telephone,&q->wage,&q->num);
}
void SortData(struct Worker *D)//数据排序!
{
struct Worker *q;
q=D;
int data[100],j=1,m=0;
memset(data,0,sizeof(data));
while(q)
{
data[j]=q->wage;
q=q->next;
j++;
}
m=j;
printf("员工工资排序为:\n");
sort(data,data+j);
for(j=2;j<m;j++)
cout<<data[j]<<" ";
cout<<endl;
}
void PrintData(struct Worker *E)//输出员工信息
{
struct Worker *q;
q=E;
while(q->next!=NULL)
{
printf("姓名:%s\n单位:%s\n性别:%c\n年龄:%d\n电话:%ld\n工资:%lf\n职工号:%ld\n",q->name,q->department,q->sex,q->age,q->telephone,q->wage,q->num);
q=q->next;
cout<<endl;
}
}
void AverWage(struct Worker *F)//输出员工的平均工资!
{ double aver,sum=0;int m=0;
struct Worker *q;
q=F;
while(q->next)
{
sum+=q->wage;
q=q->next;
m++;
}
printf("员工的平均工资为:\n");
aver=sum/m;
printf("%lf\n",aver);
}