急求下列数据结构题目答案

//试题中用到的头文件
#include <stdio.h>
#include <stdlib.h>
//试题中用到的通用数据类型和宏
typedef int Status;
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define OVERFLOW -2
(1)已知顺序表中用到的数据类型和宏如下
typedef struct
{
int ID;
int Math;
int English;
}ElemType;
typedef struct
{
ElemType *elem;
int ListLength;
int ListSize;
}SqList;
#define LIST_INIT_SIZE 100 //初次分配存储空间容量
#define LIST_INCREMENT 10 //存储空间递增数量
请往顺序表L中插入数据e,新数据的位序为i
Status ListInsert_Sq(SqList &L, int i, ElemType e )
(2)已知链表中用到的数据类型和宏
typedef struct
{
int ID;
int English;
int Math;
}ElemType;
typedef struct lnode //链表结点数据类型
{
ElemType data;
struct lnode *next;
}LNode, *LinkList;
请在链表L中,删除位序为i的结点,并用e返回结点数据
Status ListDelet_L(LinkList L, int i, ElemType &e )
(3)已知栈中用到的数据类型和宏
typedef int SElemType;
typedef struct
{
SElemType *base; //栈底指针
SElemType *top; //栈顶指针
int stacksize; //当前分配的存储空间
}SqStack;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
请写出顺序栈的入栈函数,即往栈中插入元素e为新的栈顶元素
Status Push(SqStack &S, SElemType e )
(4)已知队列中用到的数据类型和宏
typedef int QElemType;
typedef struct qnode
{
QElemType data;
struct qnode *next;
}QNode, *QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
请完成入队操作函数
Status EnQueue(LinkQueue &Q, QElemType e )
(5)已知二叉树的存储结构为:
typedef struct binode
{
TElemType data;
Strct binode *lchild;
Struct binode *rchild;
}BiNode, *BiTree;
试设计一个计算二叉树T叶子的算法。(提示可用递归方法)
int SumLeaf(BiTree T)
(6)排序算法中用到的数据类型和宏为,
#define MAXSIZE 100 //顺序表中最多可以放置多少个数据
typedef int KeyType; //关键字类型定义为整形
typedef struct
{
KeyType key;
/* ... */
}RedType;
typedef struct
{
RedType r[MAXSIZE+1]; //存放数据空间为该数组,最多放MAXSIZE个数据,
//其中0号单元不放数据
int length; //当前存放数据的个数
}SqList;

//定义比较操作的宏函数
#define EQ(key1, key2 ) ((key1) == (key2) )
#define LT(key1, key2 ) ((key1) < (key2) )
#define LE(key1, key2 ) ((key1) <= (key2) )
请完成希尔排序算法的所有函数
//希尔插入函数,将顺序表L中的数据分成dk组,对每组进行直接插入排序
//使数据在各组内部有序
void ShellInsert(SqList &L, int dk )
{
}

//希尔排序函数
//对顺序表L中数据按照关键字进行希尔排序,
//排序思想是按照增量序列dlta[0]~dlta[t-1]对顺序表L分别作希尔插入操作
void ShellSort(SqList &L, int dlta[], int t )
{

}
(7) /查找表中用到的数据类型和宏
typedef int KeyType; //关键字类型定义为整形
typedef struct
{
KeyType key;
/* ... */
}ElemType;

typedef struct
{
ElemType *elem;
int length;
}SSTable;

//定义比较操作的宏函数
#define EQ(key1, key2 ) ((key1) == (key2) )
#define LT(key1, key2 ) ((key1) < (key2) )
#define LE(key1, key2 ) ((key1) <= (key2) )
已知查找表ST为非递减的有序表,请完成折半查找函数
int Search_Bin(SSTable ST, KeyType key )
{
//在查找表ST中查找关键字为key的数据,并返回其位序
//如果所查找数据不存在,则返回值为0

}
(8) 假设线性表 L=(a1,a2,……,an) 用带头结点的单链表存储表示,试编写算法对其实现就地逆置,即利用原链表中每一个结点存储空间,使得元素的逻辑次序改变为(an,……, a2,a1)。
void Invert(LinkList &L )

第1个回答  2011-06-05
我晕,我学的是JAVA版的数据结构,帮不上你了兄弟
第2个回答  2011-06-06
000本回答被提问者采纳
相似回答