1 #include "stdio.h" 2 #include "stdlib.h" 3 #include "malloc.h" 4 5 const int maxlen=1000;//线性表的最大长度 6 typedef char type; 7 8 struct Data{ 9 char name[20];//职工的姓名 10 int num;//职工的编号 11 float basic;//职工的基本工资 12 float add;//职工的附加工资 13 float sub;//职工的扣除工资 14 float tall;//职工的总工资 15 }; 16 //-------------链表------------------ 17 struct link_list 18 { 19 Data data; 20 link_list *next; 21 }; 22 23 /*创建链表*/ 24 link_list *Create_list(link_list *head) 25 { 26 head = (link_list *)malloc(sizeof link_list);//分配存储区域 27 if(head==NULL) 28 { 29 printf("setup fail "); 30 31 exit(0); 32 } 33 head->data.name[0]='0';//表头结点的 数据区域置空 34 head->data.num=0;//表头结点的 数据区域置空 35 head->data.basic =0; //初始为0基本工资 36 head->data.add = 0; //附加工资初始为0 37 head->data.sub = 0; //扣除工资初始为0 38 head->data.tall = 0; //总工资初始为0 39 head->next=NULL; 40 return head; 41 } 42 43 /*向链表中插入一个元素(插在链表的最后面)*/ 44 void Insert_list(link_list *head,Data data) 45 { 46 link_list *q=NULL; 47 link_list *p=NULL; 48 link_list *s=NULL; 49 q=head;//头结点 50 p=q->next; 51 while(p!=NULL)//找到尾指针 52 { 53 q=p; 54 p=q->next; 55 } 56 s=(link_list *)malloc(sizeof link_list);//分配存储区域 57 s->data = data; 58 q->next=s; 59 s->next=p; 60 } 61 62 void compute(link_list *head)//计算每个职工的总工资 63 { 64 link_list *q=NULL; 65 q=head->next; 66 while(q!=NULL) 67 { 68 q->data.tall =q->data.basic + q->data.add -q->data.sub; 69 q=q->next; 70 } 71 } 72 73 void Look(link_list *head)//查看所有职工信息 74 { 75 int i; 76 link_list *q=NULL; 77 q=head->next; 78 printf(" <全部职工信息如下> "); 79 printf("------------------------------------------------------------------------ "); 80 printf("|姓名| |编号| |基本工资| 附加工资| |扣除工资| |总工资| "); 81 printf("------------------------------------------------------------------------ "); 82 83 while(q!=NULL) 84 { 85 for(i=0;q->data.name[i]!='