#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#define OK 1;
#define ERROR 0;
/////////////////////////////////////////////////
typedef struct
{
char StdId[10];
char Name[10];
}STD_DATA;
typedef struct
{
STD_DATA data;
struct STD_NODE *pNext;
}STD_NODE;
typedef struct
{
char ClassId[5];
char ClassName[10];
}CLASS_DATA;
typedef struct
{
CLASS_DATA data;
struct CLASS_NODE *pNext;
STD_NODE *pStdHead;
}CLASS_NODE,*PCLASS_NODE;
///////////////////////////////////////////////////////
CLASS_NODE *NewClassNode(void)
{
CLASS_NODE *_pClassNode;
_pClassNode=(CLASS_NODE *)malloc(sizeof(CLASS_NODE));
ClassNodeInit(_pClassNode);
return _pClassNode;
}
void ClassNodeInit(CLASS_NODE *_pClassNode)
{
strcpy(_pClassNode->data.ClassId,"");
strcpy(_pClassNode->data.ClassName,"");
_pClassNode->pStdHead=NULL;
_pClassNode->pNext=NULL;
}
void ClassNodeCopy(CLASS_NODE *_pTargetClassNode,CLASS_NODE *_pSourceClassNode)
{
strcpy(_pTargetClassNode->data.ClassId,_pSourceClassNode->data.ClassId);
strcpy(_pTargetClassNode->data.ClassName,_pSourceClassNode->data.ClassName);
}
int ClassNodeInsertByNode(PCLASS_NODE *_pClassLinkHead,CLASS_NODE *_pNewClassNode)
{
CLASS_NODE *_p1,*_p2,*_pMyClassNode;
_p1=(*_pClassLinkHead);
_pNewClassNode=NewClassNode();
ClassNodeCopy(_pMyClassNode,_pNewClassNode);
if((*_pClassLinkHead)==NULL)
{
(*_pClassLinkHead)=_pMyClassNode;
}
else
{
while((strcmp(_pMyClassNode->data.ClassId,_p1->data.ClassId)>0)&&(_p1->pNext!=NULL))
{
_p2=_p1;
_p1=_p1->pNext;
}
if(strcmp(_pMyClassNode->data.ClassId,_p1->data.ClassId)<0)
{
if((*_pClassLinkHead)==_p1)
{
(*_pClassLinkHead)=_pMyClassNode;
_pMyClassNode->pNext=_p1;
}
else
{
_p2->pNext=_pMyClassNode;
_pMyClassNode->pNext=_p1;
}
}
else if(strcmp(_pMyClassNode->data.ClassId,_p1->data.ClassId)==0)
{
free(_pMyClassNode);
return 0;
}
else if(_p1->pNext==NULL)
{
_p1->pNext=_pMyClassNode;
}
}
return 1;
}
int ClassNodeAppend(PCLASS_NODE *_pClassLinkHead,CLASS_NODE *_pNewClassNode)
{
CLASS_NODE *_p1,*_p2,*_pMyClassNode;
_p1=(*pClassLinkHead);
_pMyClassNode=NewClassNode();
ClassNodeCopy(_pMyClassNode,_pNewClassNode);
if((*_pClassLinkHead)==NULL)
{
(*_pClassLinkHead)=_pMyClassNode;
#include<string.h>
#include<stdlib.h>
#define OK 1;
#define ERROR 0;
/////////////////////////////////////////////////
typedef struct
{
char StdId[10];
char Name[10];
}STD_DATA;
typedef struct
{
STD_DATA data;
struct STD_NODE *pNext;
}STD_NODE;
typedef struct
{
char ClassId[5];
char ClassName[10];
}CLASS_DATA;
typedef struct
{
CLASS_DATA data;
struct CLASS_NODE *pNext;
STD_NODE *pStdHead;
}CLASS_NODE,*PCLASS_NODE;
///////////////////////////////////////////////////////
CLASS_NODE *NewClassNode(void)
{
CLASS_NODE *_pClassNode;
_pClassNode=(CLASS_NODE *)malloc(sizeof(CLASS_NODE));
ClassNodeInit(_pClassNode);
return _pClassNode;
}
void ClassNodeInit(CLASS_NODE *_pClassNode)
{
strcpy(_pClassNode->data.ClassId,"");
strcpy(_pClassNode->data.ClassName,"");
_pClassNode->pStdHead=NULL;
_pClassNode->pNext=NULL;
}
void ClassNodeCopy(CLASS_NODE *_pTargetClassNode,CLASS_NODE *_pSourceClassNode)
{
strcpy(_pTargetClassNode->data.ClassId,_pSourceClassNode->data.ClassId);
strcpy(_pTargetClassNode->data.ClassName,_pSourceClassNode->data.ClassName);
}
int ClassNodeInsertByNode(PCLASS_NODE *_pClassLinkHead,CLASS_NODE *_pNewClassNode)
{
CLASS_NODE *_p1,*_p2,*_pMyClassNode;
_p1=(*_pClassLinkHead);
_pNewClassNode=NewClassNode();
ClassNodeCopy(_pMyClassNode,_pNewClassNode);
if((*_pClassLinkHead)==NULL)
{
(*_pClassLinkHead)=_pMyClassNode;
}
else
{
while((strcmp(_pMyClassNode->data.ClassId,_p1->data.ClassId)>0)&&(_p1->pNext!=NULL))
{
_p2=_p1;
_p1=_p1->pNext;
}
if(strcmp(_pMyClassNode->data.ClassId,_p1->data.ClassId)<0)
{
if((*_pClassLinkHead)==_p1)
{
(*_pClassLinkHead)=_pMyClassNode;
_pMyClassNode->pNext=_p1;
}
else
{
_p2->pNext=_pMyClassNode;
_pMyClassNode->pNext=_p1;
}
}
else if(strcmp(_pMyClassNode->data.ClassId,_p1->data.ClassId)==0)
{
free(_pMyClassNode);
return 0;
}
else if(_p1->pNext==NULL)
{
_p1->pNext=_pMyClassNode;
}
}
return 1;
}
int ClassNodeAppend(PCLASS_NODE *_pClassLinkHead,CLASS_NODE *_pNewClassNode)
{
CLASS_NODE *_p1,*_p2,*_pMyClassNode;
_p1=(*pClassLinkHead);
_pMyClassNode=NewClassNode();
ClassNodeCopy(_pMyClassNode,_pNewClassNode);
if((*_pClassLinkHead)==NULL)
{
(*_pClassLinkHead)=_pMyClassNode;

