C程序设计实验十.docVIP

  • 32
  • 0
  • 约9.25千字
  • 约 9页
  • 2018-10-09 发布于重庆
  • 举报
C程序设计实验十

实验十 1.实验目的 (1)理解链表的概念及使用链表的优点。 (2)学会链表的建立、查询、输出、删除、排序等操作。 (3)初步学会用链表处理职工工资等实际问题。 2.实验要求 (1)编写实验程序; (2)在VC++运行环境中,输入源程序; (3)编译运行源程序; (4)输入测试数据进行程序测试; (5)写出运行结果。 3.实验内容 (1)建立一个描述职工工资的无序链表,各结点内容如表8.4所示。计算出各职工的实发工资,并输出链表中各职工结点的内容。最后删除链表,回收链表占用空间。建立无序链表、计算实发工资(实发工资=应发工资-税金)、输出链表、删除链表各用一个函数实现。在主函数中调用四个函数完成上述操作。 表8.4 职工工资表 no(工号) name[8] (姓名) dsalary (应发工资) tax(税金) fsalary (实发工资) 1001 Zhang 1900 85 1002 Wang 1800 80 1003 Li 1700 70 1004 Zhou 2000 90 (2)在实验(1)的基础上,再编写能删除指定工号结点的函数,能在指定工号结点前插入新职工结点的函数。在主函数中输入要删除与插入结点的工号,并调用删除与插入函数删除与插入指定结点。插入新职工的信息在插入函数内输入。 (3)建立一个描述职工工资的有序链表,各结点内容如表8.4所示,输入职工信息时自动计算实发工资,链表按实发工资升序排列。输出有序链表各结点内容,最后删除链表。 4.解答参考 (1) # include iostream.h # include string.h struct employee { int no; char name[8]; float salary,tax; float fsalary; node *next; }; node * Create(void ) { int no; //定义输入职工工号的临时变量no node *head,*pn,*pt; //定义链表头指针、新结点指针、尾指针head、pn、pt。 head=0; //链表头指针赋0,表示链表为空。 cout产生无序链表,请输入工号、姓名、应发工资、税金, 以工号为-1结束:endl; cinno; //输入职工工号 while (no!= -1) //工号为-1时结束输入 { pn= new node; //动态分配新结点内存空间,并将结点地址赋给pn。 pn-no=no; //将职工工号输入新结点 cinpn-name ; //职工姓名输入新结点 cinpn-salary ; //应发工资输入新结点 cinpn-tax ; //税金输入新结点 if (head==0) //若链表为空 { head=pn; //则将新结点地址由pn赋给头指针head与尾指针pt pt=pn; //使新结点加入到链首 } else //否则链表非空 { pt-next=pn; //将新结点地址由pn赋给链尾的next指针与尾指针pt pt=pn; //使新结点加入到链尾 } cin no; //输入职工工号 } pt-next=0; //链尾指针变量赋0 return (head); //返回链表的头指针 } void Calcu(node *head) { node *p; p=head; while (p!=0 ) { p-fsalary=p-salary-p-tax; p=p-next; } } void Print(const node *head) { const node *p; p=head; cout输出链表中各结点值:endl; while (p!=0 ) { coutp-no\tp-name\tp-salary \tp-tax\tp-fsalary\tendl; p=p-next; } } void Delchain(node * head) { n

文档评论(0)

1亿VIP精品文档

相关文档