资源简介
consts.cpp
代码片段和文件信息
#include“consts.h“
typedef struct GLNode
{
char name[100]; /* 教师或学生的姓名 */
char prof[100]; /* 教师结点表示职称,学生结点表示班级 */
int type; /* 结点类型:0--教师,1--研究生,2--本科生 */
struct {struct GLNode *hp*tp;}ptr;/* hp 指向同级的下一结点,tp 指向下级的首结点 */
}GList;
GList *GListCreate(char *str)/*建立广义表*/
{
GList *head*p*q*m*a;/* 简要介绍:head 指向头结点不变;p 指向导师结点;q 指向研究生结点;a 指向本科生节点; m 指向新建立的节点*/
int i = 0j = 0flag = 0flag1 = 0flag2=0len = strlen(str);
head=p=q=m=a=NULL;
while(i < len)
{
if(str[i] == ‘)‘ || str[i] == ‘(‘ || str[i] == ‘‘|| str[i] == ‘)‘|| str[i] == ‘(‘|| str[i] == ‘,‘)
{i++;continue;}
else
{
if(!(m =(GList *)malloc(sizeof(GList)))) exit(1);
for(j=0;str[i] != ‘-‘;) /* 将字符串中的学生信息转化成学生结点 */
m->name[j++] = str[i++];
m->name[j] = ‘\0‘;
for(j=0++i;str[i] != ‘-‘;)
m->prof[j++] = str[i++];
m->prof[j] = ‘\0‘;
m->type = str[++i] - 48;
m->ptr.hp=m->ptr.tp=NULL;
i++;
if(m->type == 0) /* 导师结点的处理 */
{
if(flag)
{
p->ptr.hp=m; /* 非首结点 */
p=m;
}
else
{
head=p=m; /* 首结点的处理 */
flag=1;
}
flag1=0;
a=q=m; /* a 在此等于 m主要是处理本科生直属于导师的情
况 */
}
else if(m->type==1) /* 研究生结点 */
{
if(flag1)
{
q->ptr.hp=m; /* 非首结点的处理 */
q=m;
}
else
{
q->ptr.tp=m; /* 首结点的处理 */
q=m;
flag1=1;
}
flag2=0;
a=m;
}
else /* 本科生结点 */
{
if(flag2)
{
a->ptr.hp=m; /* 非首结点的处理 */
a=m;
}
else
{
a->ptr.tp=m; /* 首结点的处理 */
a=m;
flag2=1;
}
}
}
}
return head;
}
void GListPrint(GList *head)/*输出广义表*/
{
GList *p*q*a; /* 与 CreatGList 函数中的指向一样 */
int flag=0flag1=0flag2=0;
p = head;
printf(“(“);
while(TRUE) /* 导师范畴 */
{
if(p == NULL) break;
if(flag)
printf(“(%s-%s-%d“p->namep->profp->type);
else
{
printf(“(%s-%s-%d“p->namep->profp->type);
flag=1;
}
q = p->ptr.tp;
flag2=flag1=0;
while(TRUE) /* 研究生或本科生范畴 */
{
if(q == NULL) break;
if(flag1)
if(q->type==1)
printf(“(%s-%s-%d“q->nameq->profq->type);
else
printf(“%s-%s-%d“q->nameq->profq->type);
else
{
printf(“(%s-%s-%d“q->nameq->profq->type);
flag1=1;
}
a = q->ptr.tp;
flag2 = 0;
while(TRUE) /* 本科生范畴 */
{
if(a == NULL) break;
if(flag2)
printf(“%s-%s-%d“a->namea->profa->type);
else
{
printf(“(%s-%s-%d“a->namea->profa->type);
flag2 = 1;
}
a = a->ptr.hp;
}
if(flag2) printf(“)“);
if(q->type==1 ||( q->ptr.hp==NULL))
printf(“)“);
q = q->ptr.hp;
}
printf(“)“);
p = p->ptr.hp;
}
printf(“)\n“);
}
GList *StudentInsert(GList *head)/* 插入学生 */
{
char slen[100]teacher[100]graduate[100];
GList *Slen*p*q;
int ij;
p = head;
printf(“请输入待插入学生信息,如:李刚-二班-1\n“);
scanf(“%s“slen);
if(!(Slen =(GList *)malloc(sizeof(GList))
相关资源
- 银行管理系统.cpp
- VC++外挂框架.rar
- VisualC++网络高级编程.(人民邮电.陈坚
- C++黑客编程揭秘与防范.pdf
- BombGoldFlower.cpp
- c++万能外挂.txt
- ZhajingHua.cpp
- C++AMP.pdf
- c++程序设计语言英文第三版.pdf
- Visual_assist_X_for_VC6.0破解版.rar
- 《C语言程序设计》谭浩强.pdf
- c++辅助源码.rar
- GBT28169-2011嵌入式软件C语言编码规范
- 用MFC实现的图像处理源代码总集
- C语言程序设计(郑莉)源码.rar
- zw_MFC编写一个简单的登录对话框(连
- 鸡啄米:VS2010MFC编程入门教程.pdf
- ATM源代码用c++文件读写.zip
- C语言写的文件传输系统
- MFC黑马程序员教程.rar
- zw_VS2013MFC编程基础19个专题.zip
- acr122udrivermfcuk.zip
- Visual C++数字图像实用工程案例精选徐
- 谭浩强《C语言程序设计》考研考点讲
- MFC课程设计1.rar
- 提高C++性能的编程技术.pdf
- C语言项目案例分析.zip
- c与c++嵌入式系统编程.pdf
- 2018年东南大学553C、C++程序设计考研复
- C++浏览器.rar
评论
共有 条评论