前言:大二数据结构的实验作业,时间有点紧,做的比较粗糙,希望大佬们看到可以优化的地方能指点指点小生。
实验要求是
主要界面如下(做的非常一般,后面看有没有时间在美化美化,想做一些圆角化的)
下面是对链表操作的函数的头文件
list_function.h
#ifndef LIST_FUNCTION_H
#define LIST_FUNCTION_H
#include "mainwindow.h"
#include <string>
using namespace std;
#define N 100 //表长
/**
*声明结构体变量
*/
typedef struct{
char number[30]; //学号
char name[30]; //姓名
char sex[30]; //性别
char tel[30]; //电话
char loc[30]; //地址
}Student;
typedef struct{
Student* elem[N]; //储存空间的基地
int length; //数据结构的长度
}SqList;
extern SqList *L;
class List_function
{
public:
List_function();
};
//对链表操作的函数
void insert_data(SqList *L,char* e); //从txt文件导入数据
void Init_List(SqList *L); //初始化链表
void Insert(SqList *L,int i); //插入联系人的位置
void Delete(SqList *L,int i); //删除联系人
void Updata_list(SqList *L,int i); //更新联系人信息
//文件路径
extern char* input_file;
extern char* output_file;
extern int flag; //检测是否导入文件
#endif // LIST_FUNCTION_H
下面是list_function.cpp源文件
#include "list_function.h"
#include "mainwindow.h"
SqList *L;
char* input_file;
char* output_file;
int flag = 0;
/**
* 初始化顺序表基本算法
*/
void Init_List(SqList *L)
{//构造一个空的顺序表L
L->length = 1; //空出第个节点
for (int i=0;i<N;i++){
L->elem[i] = (Student*)malloc(sizeof(Student)); //分配内存空间
}
}
/**
* isnert_data()
* 用法:读取txt文件并导入链表中
*/
void insert_data(SqList *L,char* e){
FILE *file = fopen(e,"rt");
for(int i = 0;i<N;i++){
if(EOF == fscanf(file,"%s %s %s %s %s",L->elem[i]->number,L->elem[i]->name,
L->elem[i]->sex,L->elem[i]->tel,L->elem[i]->loc)){//空格数与txt文件相同即可,头节点存放表头
break;
}
L->length++; //链表长度
}
fclose(file);
}
/**
* 插入函数Insert()
* 用法:输入插入的位置例如"3",将插入的数据放在第3位,3后面的依次后移
* 说明:i为插入的位置
*/
void Insert(SqList *L,int i){//将第0位插入到位置i
for(int j=L->length;j>=i;j--){
L->elem[j+1]=L->elem[j]; //将第n个至i个位置的元素后移
}
L->elem[i]=L->elem[0];
L->length++; //线性表长度+1
}
/**
* 删除Delete()
* 用法:输入要删除的联系人序号
* 说明:i为要删除联系人的节点位置
*/
void Delete(SqList *L,int i){
for(int j=i;j<=L->length;j++){
L->elem[j]=L->elem[j+1]; //将第n个至i个位置的元素前移
}
L->length--; //线性表长度-1
}
/**
* 更新Updata_list()
* 用法:将头节点的数据赋给对应节点
* 说明:i位更新联系人的位置
*/
void Updata_list(SqList *L, int i){
L->elem[i]=L->elem[0];
}
老师指导说,mian.cpp文件就是进入窗口的作业,所有我把对链表操作的函数都集成在了特点的函数文件里面(list_function.h和list_function.cpp)
全部文件链接