fun.h文件
来源:互联网 发布:java 转发 编辑:程序博客网 时间:2024/04/29 19:32
//注意保存为fun.h文件
#include "stdio.h"
#define MAXSIZE 40
int COUNT=0;//全局,节点个数
//------------------------------------------
//学生结构体定义
struct STU
{
char name[30];
int age;
char ban[40];
int cj;
};
//二叉树结构体
struct btree
{
struct STU data;//本身数据,这里是学生结构
int left;//左节点号
int right;//右节点
};
int MAXSTU(struct STU data_1,struct STU data_2)//比较STU(学生)成绩大小,后面大
{
if(data_1.cj<data_2.cj) return 1 ;//
else return 0 ;
}
//插入节点函数
int ins(struct btree q[],struct STU indata)//q[0]unsued
{
int i=1;
if(COUNT>=MAXSIZE) {printf("insert error:too many data");return 0;}
q[++COUNT].data=indata;//COUNT此时是以前个数,期望加一
q[COUNT].left =0;
q[COUNT].right=0;
while(i<COUNT)
{
if(MAXSTU(indata,q[i].data))
{
if(q[i].left==0) q[i].left=COUNT;//新节点找到位置
else i=q[i].left;
}
else//indata
{
if(q[i].right==0) q[i].right=COUNT;//新节点找到right位置
else i=q[i].right;
}
}
return i;
}
//显示一个结点信息,也就是显示一个学生的信息
void show(struct btree btnode)
{
printf("姓名:%7s, 年龄:%3d, 班级:%10s, 成绩:%3d./n"
,btnode.data.name,btnode.data.age,btnode.data.ban,btnode.data.cj);
}
//********************
//二叉树排序函数,即中序遍历算法
int sortbt(struct btree q[],struct btree btnode)//COUNT is num
{
if(btnode.left>0) sortbt(q,q[btnode.left]);
show(btnode);
if(btnode.right>0) sortbt(q,q[btnode.right]);
return 0;
}
//----------------------------------------------
int sortbt2(struct btree q[],struct btree btnode)//big -> small
{
if(btnode.right>0) sortbt(q,q[btnode.right]);
show(btnode);
if(btnode.left>0) sortbt(q,q[btnode.left]);
return 0;
}
//#############################################################################################
#include "string.h"
/*
*存储所有学生信息到文件(文件名默认:save.txt)
*文件格式例如xiao:20:software(2):95
*/
//存储文件函数
int saveSTU(struct btree Q[])
{
FILE *out;
int i;
out = fopen( "save.txt", "w" );
for(i=1;i<=COUNT;i++)
fprintf(out,"%s:%d:%s:%d/n",Q[i].data.name,Q[i].data.age,Q[i].data.ban,Q[i].data.cj);
fclose(out);
return 0;
}
//从文件读出数据函数
int readSTU(struct btree Q[],int maxnum)//maxnum is the max of Q[]
{
//printf(">>>>>>>>in reading file/n");
//check the file(save.txt)
struct STU stu;
FILE *in;
int i,j;
char buf[sizeof(struct STU)];
in = fopen( "save.txt", "r" );
for(i=1;i<=maxnum;i++)
{
fgets(buf,sizeof(struct STU),in);
//printf("buf>>%s/n",buf);
for(j=0;j<(int)strlen(buf);j++) if(buf[j]==':') buf[j]=' ';
sscanf(buf,"%s%d%s%d",stu.name,&stu.age,stu.ban,&stu.cj);
if(feof(in)) break;
ins(Q,stu);
}
if(i>maxnum) printf("error:too many data in reading file!/n");
COUNT=i-1;
fclose(in);
return 0;
}
#include "stdio.h"
#define MAXSIZE 40
int COUNT=0;//全局,节点个数
//------------------------------------------
//学生结构体定义
struct STU
{
char name[30];
int age;
char ban[40];
int cj;
};
//二叉树结构体
struct btree
{
struct STU data;//本身数据,这里是学生结构
int left;//左节点号
int right;//右节点
};
int MAXSTU(struct STU data_1,struct STU data_2)//比较STU(学生)成绩大小,后面大
{
if(data_1.cj<data_2.cj) return 1 ;//
else return 0 ;
}
//插入节点函数
int ins(struct btree q[],struct STU indata)//q[0]unsued
{
int i=1;
if(COUNT>=MAXSIZE) {printf("insert error:too many data");return 0;}
q[++COUNT].data=indata;//COUNT此时是以前个数,期望加一
q[COUNT].left =0;
q[COUNT].right=0;
while(i<COUNT)
{
if(MAXSTU(indata,q[i].data))
{
if(q[i].left==0) q[i].left=COUNT;//新节点找到位置
else i=q[i].left;
}
else//indata
{
if(q[i].right==0) q[i].right=COUNT;//新节点找到right位置
else i=q[i].right;
}
}
return i;
}
//显示一个结点信息,也就是显示一个学生的信息
void show(struct btree btnode)
{
printf("姓名:%7s, 年龄:%3d, 班级:%10s, 成绩:%3d./n"
,btnode.data.name,btnode.data.age,btnode.data.ban,btnode.data.cj);
}
//********************
//二叉树排序函数,即中序遍历算法
int sortbt(struct btree q[],struct btree btnode)//COUNT is num
{
if(btnode.left>0) sortbt(q,q[btnode.left]);
show(btnode);
if(btnode.right>0) sortbt(q,q[btnode.right]);
return 0;
}
//----------------------------------------------
int sortbt2(struct btree q[],struct btree btnode)//big -> small
{
if(btnode.right>0) sortbt(q,q[btnode.right]);
show(btnode);
if(btnode.left>0) sortbt(q,q[btnode.left]);
return 0;
}
//#############################################################################################
#include "string.h"
/*
*存储所有学生信息到文件(文件名默认:save.txt)
*文件格式例如xiao:20:software(2):95
*/
//存储文件函数
int saveSTU(struct btree Q[])
{
FILE *out;
int i;
out = fopen( "save.txt", "w" );
for(i=1;i<=COUNT;i++)
fprintf(out,"%s:%d:%s:%d/n",Q[i].data.name,Q[i].data.age,Q[i].data.ban,Q[i].data.cj);
fclose(out);
return 0;
}
//从文件读出数据函数
int readSTU(struct btree Q[],int maxnum)//maxnum is the max of Q[]
{
//printf(">>>>>>>>in reading file/n");
//check the file(save.txt)
struct STU stu;
FILE *in;
int i,j;
char buf[sizeof(struct STU)];
in = fopen( "save.txt", "r" );
for(i=1;i<=maxnum;i++)
{
fgets(buf,sizeof(struct STU),in);
//printf("buf>>%s/n",buf);
for(j=0;j<(int)strlen(buf);j++) if(buf[j]==':') buf[j]=' ';
sscanf(buf,"%s%d%s%d",stu.name,&stu.age,stu.ban,&stu.cj);
if(feof(in)) break;
ins(Q,stu);
}
if(i>maxnum) printf("error:too many data in reading file!/n");
COUNT=i-1;
fclose(in);
return 0;
}
- fun.h文件
- fun
- fun
- FUN
- fun
- .h文件,
- .h文件
- 【fun】自制程序运行时间监测头文件
- Imm.h文件
- srv_linkage.h文件说明
- 关于afxtempl.h文件
- .h 与 .hpp 文件
- conio.h头文件
- stdlib.h头文件
- 找不到'afximpl.h'文件
- include .h文件
- 头文件time.h
- ATLCPImplMT.h文件
- 天极Yesky上的VB专题
- 键盘消息
- CSS的十八般技巧
- 多线程共享COM组件的问题
- 主函数(main.c)
- fun.h文件
- php的sessionid可以伪造,不要用来做防刷新处理了!
- Windows窗体上数据同步
- 文件读取的基本方法
- 有没有什么好的方法实现在线升级
- 呵呵
- VCL的通用属性,方法和事件
- Delphi中建议使用的语句
- Variant的相关函数