1、/*【题目】试写一算法,如果三个整数 a,b 和 c 的值不是依次非递增的,则通过交换,令其为非递增。*/void Descend(int for(int i=1;iMAXINT)return ERROR;return OK;/*【题目】假设有 A、B 、C、D、E 五个高等院校进行田径对抗赛,各院校的单项成绩均以存入计算机并构成一张表,表中每一行的形式为:项目名称 性别 校名 成绩 得分编写算法,处理上述表格,以统计各院校的男、女总分和团体总分,并输出。*/void Scores(ResultType *result, ScoreType *score)/* 求各校的男、女总分和团体总分,
2、并依次存入数组 score */* 假设比赛结果已经储存在 result 数组中, */* 并以特殊记录 “, male, , “, 0 (域 scorce=0)*/* 表示结束 */int i=0;while(resulti.sport!=NULL) switch(resulti.schoolname) case A: score0.totalscore+=resulti.score;if(resulti.gender=male)score0.malescore+=resulti.score;elsescore0.femalescore+=resulti.score; break;case
3、B: score1.totalscore+=resulti.score;if(resulti.gender=male)score1.malescore+=resulti.score;elsescore1.femalescore+=resulti.score; break;case C: score2.totalscore+=resulti.score;if(resulti.gender=male)score2.malescore+=resulti.score;elsescore2.femalescore+=resulti.score; break;case D: score3.totalsco
4、re+=resulti.score;if(resulti.gender=male)score3.malescore+=resulti.score;elsescore3.femalescore+=resulti.score; break;case E: score4.totalscore+=resulti.score;if(resulti.gender=male)score4.malescore+=resulti.score;elsescore4.femalescore+=resulti.score; break; i+;/*【题目】试写一算法,对序列 S 的第 i 个元素赋以值 e。序列的类型
5、定义为:typedef struct ElemType *elem;int length; Sequence;*/Status Assign(Sequence elseS.elemi=e;return OK; /*【题目】试写一算法,由长度为 n 的一维数组 a 构建一个序列 S。序列的类型定义为:typedef struct ElemType *elem;int length; Sequence;*/Status CreateSequence(Sequence return p;/*【题目】链表的结点和指针类型定义如下typedef struct LNode ElemType data;st
6、ruct LNode *next; LNode, *LinkList;试写一函数,构建长度为 2 且两个结点的值依次为 x 和 y 的链表。*/LinkList CreateLinkList(ElemType x, ElemType y) /* 构建其两个结点的值依次为 x 和 y 的链表。*/* 若构建失败,则返回 NULL。 */LNode * p;p=(LNode*)malloc(sizeof(LNode);if(p=NULL)return NULL;elsep-next=(LNode*)malloc(sizeof(LNode);if(p-next=NULL)return NULL;p-
7、data=x;p-next-data=y;p-next-next=NULL;return p;/*【题目】链表的结点和指针类型定义如下typedef struct LNode ElemType data;struct LNode *next; LNode, *LinkList;试写一函数,构建长度为 2 的升序链表,两个结点的值分别为 x 和 y,但应小的在前,大的在后。*/LinkList CreateOrdLList(ElemType x, ElemType y)/* 构建长度为 2 的升序链表。 */* 若构建失败,则返回 NULL。 */LNode * p;p=(LNode*)mall
8、oc(sizeof(LNode);if(p=NULL)return NULL;elsep-next=(LNode*)malloc(sizeof(LNode);if(p-next=NULL)return NULL;p-data=(xnext-data=(xy)?x:y;p-next-next=NULL;return p;/*【题目】试写一算法,实现顺序栈的判空操作StackEmpty_Sq(SqStack S)。顺序栈的类型定义为:typedef struct ElemType *elem; / 存储空间的基址int top; / 栈顶元素的下一个位置,简称栈顶位标int size; / 当前分
9、配的存储容量int increment; / 扩容时,增加的存储容量 SqStack; / 顺序栈*/Status StackEmpty_Sq(SqStack S)/* 对顺序栈 S 判空。 */ /* 若 S 是空栈,则返回 TRUE;否则返回 FALSE */if(S.top=0)return TRUE;return FALSE;/*【题目】试写一算法,实现顺序栈的取栈顶元素操作GetTop_Sq(SqStack S, ElemType / 存储空间的基址int top; / 栈顶元素的下一个位置,简称栈顶位标int size; / 当前分配的存储容量int increment; / 扩容
10、时,增加的存储容量 SqStack; / 顺序栈*/Status GetTop_Sq(SqStack S, ElemType e=S.elemS.top-1;return OK;/*【题目】试写一算法,实现顺序栈的出栈操作Pop_Sq(SqStack / 存储空间的基址int top; / 栈顶元素的下一个位置,简称栈顶位标int size; / 当前分配的存储容量int increment; / 扩容时,增加的存储容量 SqStack; / 顺序栈*/Status Pop_Sq(SqStack e=S.elem-S.top;return OK;/*【题目】若顺序栈的类型重新定义如下。试编写算
11、法,构建初始容量和扩容增量分别为 size 和 inc 的空顺序栈 S。typedef struct ElemType *elem; / 存储空间的基址ElemType *top; / 栈顶元素的下一个位置int size; / 当前分配的存储容量int increment; / 扩容时,增加的存储容量 SqStack2;*/Status InitStack_Sq2(SqStack2 if(S.elem=NULL|sizeS.size)p=(ElemType*)realloc(S.elem,(S.size+S.increment)*sizeof(ElemType);if(p=NULL)retu
12、rn ERROR;S.elem=p;S.size+=S.increment;*(S.top+)=e;return OK;/*【题目】若顺序栈的类型重新定义如下。试编写算法,实现顺序栈的出栈操作。typedef struct ElemType *elem; / 存储空间的基址ElemType *top; / 栈顶元素的下一个位置int size; / 当前分配的存储容量int increment; / 扩容时,增加的存储容量 SqStack2;*/Status Pop_Sq2(SqStack2 e=*(-S.top);return OK;/*【题目】试写一算法,借助辅助栈,复制顺序栈 S1 得到 S2。顺序栈的类型定义为:typedef struct ElemType *elem; / 存储空间的基址int top; / 栈顶元素的下一个位置,简称栈顶位标int size; / 当前分配的存储容量int increment; / 扩容时,增加的存储容量 SqStack; / 顺序栈