链表综合算法设计

该程序设计了一个链表,用于存储职工记录,包括职工号、姓名、部门号和工资等信息。提供了添加记录、输出所有记录、按职工号、部门号和工资排序及输出、全清和存储退出等功能。通过直接插入法进行排序,实现了对链表的高效操作。
摘要由CSDN通过智能技术生成

/**
*   实验题目
*       链表综合算法设计
*   实验内容
*       设有一个职工文件,其结构为职工号no、姓名name、部门号depno、
*   工资数salary、职工号指针pno、部门号指针pdepno和工资数指针psalary。
*   设计一个程序,从该文件中读取记录到一个单链表中,并完成如下功能:
*   1、输入:添加一个职工记录
*   2、输出:输出全部职工记录
*   3、按职工号no排序:通过pno指针将职工记录按照no从小到大的顺序链接起来
*   4、按职工号no输出:沿pno链输出全部职工记录
*   5、按部门号depno排序:通过pdepno指针将职工记录按照depno从小到大的
*       顺序链接起来
*   6、按部门号depno输出:沿pdepno链输出全部职工记录
*   7、按工资数salary排序:通过psalary指针将职工记录按salary从小到大的
*       顺序链接起来
*   8、按salary输出:沿psalary链输出全部职工记录
*   9、全清:删除职工文件中的全部记录
*   10、存储退出:将单链表中的全部结点存储到职工文件中,然后退出程序的
*       运行过程
*
*/

#include <stdio.h>

#define MaxSize 100

/*-------------------职工文件数据结构体----------------------*/
typedef struct node {
    int no;                     // 职工号
    char name[10];              // 姓名
    int depno;                  // 部门号
    float salary;               // 工资数
    int pno;                    // 职工号指针
    int pdepno;                 // 部门号指针
    int psalary;                // 工资数指针
}EmpType;// 职工类型结构

// 清除职工文件的全部记录
static void DelAll(EmpType emp[], int &n)
{
    FILE *fp;

    fp = fopen("emp.dat", "wb");
    if(fp == NULL){
        printf("不能打开职工文件\n");
        return;
    }
    emp[0].pno = emp[0].pdepno = emp[0].psalary = -1; // 初始化
    n = 0;
    fclose(fp);
}

// 读数据文件并存入emp数组中
static void ReadFile(EmpType emp[], int &n)
{
    FILE *fp;       // 文件指针
    long length;    // 文件长度
    int i;          // 循环变量

    fp = fopen("emp.dat", "rb"); // 以只读模式打开二进制文件
    if(fp ==

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值