簡單的數據結構應用,不多說,看程序!!!哈!!!
希望對你能有幫助!!!
#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);
}