📄 link.cpp
字号:
// Link.cpp: implementation of the CLink class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "grade.h"
#include "Link.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CLink::CLink()
{
}
CLink::~CLink()
{
}
void CLink::Insert(Link h, CString code,CString name,CString MGrade,CString EGrade,CString UGrade1,CString UGrade2,CString UGrade3,CString UGrade4,CString FGrade,int i)
{
Link p, q;
float UPortion=0.2;
float MPortion=0.2;
float EPortion=0.6;
CString str;
float total=0;
if(i==0) p=h;
else p=GetList(h ,i-1); //取结点i-1的指针//
if(p==NULL)
{
Inok = FALSE;
}
else
{
q = new Node; //申请插入结点
q->Name =name;
q->Code =code;
q->MidGrade=MGrade;
q->EndGrade=EGrade;
q->UGrade1=UGrade1;
q->UGrade2=UGrade2;
q->UGrade3=UGrade3;
q->UGrade4=UGrade4;
total=atof(MGrade)*MPortion+atof(EGrade)*EPortion+(atof(UGrade1)+atof(UGrade2)+atof(UGrade3)+atof(UGrade4))*UPortion;
str.Format("%2f",total);
q->FGrade=str;
q->Order="0";
q->Next = p->Next; //插入新结点
p->Next = q;
Inok = TRUE;
}
}
void CLink::InitList()
{
Link h;
h = new Node;
H = h;
H->Next = NULL;
}
Link CLink::GetList(Link h, int i)
{
int j=-1;
Link P=h;
if (i<0) return(NULL);
while(P->Next&&j<i)
{
P=P->Next;j++;
}
if (i==j) return(P);
else return(NULL); //查找失败,即i>表长//
}
Link CLink::GetLast()
{
return L;
}
Link CLink::GetHead()
{
return H;
}
void CLink::QueList(Link h, int link_No)
{
Link temp1,temp2;
for(int y=0;y<link_No;y++)
{
for(int x=1;x<link_No-y;x++)
{
temp1 = GetList(h,y);
temp2 = GetList(h,y+1);
if(atof(temp1->FGrade)<atof(temp2->FGrade))
{
Insert(h,temp2->Code,temp2->Name,temp2->MidGrade,temp2->EndGrade,temp2->UGrade1,temp2->UGrade2,temp2->UGrade3,temp2->UGrade4,temp2->FGrade,y);
Delete(h,y+2);
}
}
}
}
void CLink::Delete(Link h, int i)
{
Link p,q;
if(i==0) p=h;
else p=GetList(h,i-1); //求第i-1的地址
if(p&&p->Next) //若p及p->next所在的结点存在
{
q=p->Next;
p->Next=q->Next;
delete q; //删除//
Delok = TRUE;
}
else //否则失败
{
Delok = FALSE;
}
}
Link CLink::Find(Link h, CString name)
{
Link p=h->Next;
while(p!=NULL&&p->Name!=name)
{
p=p->Next;
}
return p;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -