个人账单管理系统_数据结构课程设计(编辑修改稿)内容摘要:

//判断输入的年份是否为合理数据 { printf(\n\t 输入您要建立账单的月份 \n\t)。 scanf(%d,amp。 j)。 //输入月份数据 if(j0amp。 amp。 j13) //判断输入的月份数据是否为合理数据 { tail=(bill *)malloc(sizeof(bill))。 //申请一个结点空间 if(tail==NULL) { printf(存储空间分配失败 !\n)。 return(NULL)。 } taildate=100*i+j。 //将年份和月份为转为一长整数字存储 tailnext=NULL。 //新结点的指针域指向空 printf(\n\t 输入 食品费用 :\t)。 scanf(%ld,amp。 tailfood)。 //输入食品费用 printf(\n\t 输入 房租 :\t)。 scanf(%ld,amp。 tailfangzu)。 //输入房租费用 printf(\n\t 输入 子女教育费 :)。 scanf(%ld,amp。 tailjiaoyu)。 // 输入子女教育费 printf(\n\t 输入 水电费 :\t)。 scanf(%ld,amp。 tailshuidian)。 //输入水电费 printf(\n\t 输入 医疗费 :\t)。 scanf(%ld,amp。 tailyiliao)。 //输入医疗费 printf(\n\t 输入 储蓄 :\t)。 scanf(%ld,amp。 tailchuxu)。 //输入存储 printf(\n\t 输入 总收入 :\t)。 沈阳航空航天大学课程设计报告 9 scanf(%ld,amp。 tailine)。 //输入总收入 tailpay=tailfood+tailfangzu+tailjiaoyu+tailshuidian+tailyiliao。 //将所有支出相加作为总支出 pnext=tail。 //将新申请的结点链接到原链表的最尾端 p=pnext。 //指针 p 向后移动一个单位 } else printf(\n\t 输入月份不合理,请重新输入。 \n\t)。 printf(\n\t 输入您 要建立账单的年份 ,当输入非正数时结束输入。 \n\t)。 scanf(%ld,amp。 i)。 //输入年份信息 } } MYBILL *jianli(MYBILL *head) //建立账单链表函数 { MYBILL *head。 //定义结构体类型指针 tianjia(head)。 //调用子函数 tianjia() if (headnext!=NULL) //判断账单链表是否为仅含空头结点的链表 printf(\n\t\t\t===========账单录 入成功。 ===========\n\n)。 else printf(\n\t\t\t===========没有账单录入。 ===========\n\n)。 return head。 //返回头指针 } 2. 账单排序,排序方法采用将所有数据中最小和最大值挑选出来,再将处于这两个数据中间位置的其他数据进行插入。 MYBILL *paixu(MYBILL *head) //账单信息排序函数 { long min,max。 //定义两个变量对两个最值 数据进行标记 int i,j。 //年份月份定义 MYBILL *q,*t,*p,*head1。 //定义结构体类型指针 q=headnext。 //将 q 初始化为 headnext 沈阳航空航天大学课程设计报告 10 if(headnext!=NULL) //判断链表是否为只含头结点的空链表 { min=qpay。 //第一结链表支出最少 t=head。 //初始化指针 t 的值 p=q。 //初始化 p 的值 while (qnext!=NULL) //月支出最小结点 为新排序账单的第一个结点 {if (minqnextpay) //比较 q 的 pay 和 qnext 的 pay 大小 { min=qnextpay。 //如果 pnext 的 pay 小将其值赋给 min p=qnext。 //用 p 标记支出最少的结点 t=q。 //用 t 标记支出最少的结点的上一结点 } 以便摘除支出最少的结点 q=qnext。 //将指针 q 向后移动一个单位 } tnext=pnext。 //将支出最少的结点摘下 head1=(bill *)malloc(sizeof(bill))。 //申请排序后链表头结点 head1next=p。 //将最小支出连接到新链表后作为第一个结点 pnext=NULL。 //将新链表尾端指向空 q=headnext。 //再次将 q 指向原链表头指针的后一结点 if(q!=NULL) //判断链表是否为只含头结点的空链表 { max=qpay。 //月支出最大结点 为新排序账单的第二个结点 t=head。 //初始化指针 t 的值 p=q。 //初始化 p 的值 while (qnext!=NULL) //判断是否只存在最大最小支出外 { if (maxqnextpay)//比较 max 与 qnextpay 的大小 {max=qnextpay。 //如果 pnext 的 pay 小将其值赋给 max p=qnext。 //用指针 p 标记支出最多的结点 t=q。 //用指针 t 标记支出最大的结。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。