首页 > 代码库 > 迎战下周自考数据结构实践科目

迎战下周自考数据结构实践科目

编写完成重点数据结构和算法: 0.链表 1.栈 2.队列 3.二叉树数据结构和构建 4.前序中序后序遍历二叉树 5.构建哈夫曼树(最优二叉树) 6.图数据结构,图的深度优先遍历和广度优先遍历 7.拓扑排序 8.直接插入排序 9.希尔排序 10.希尔排序 11.冒泡排序 12.快速排序 13.直接选择排序 14.堆排序 15.归并排序 16.箱排序和基数排序 17.顺序查找,二分查找,索引顺序查找 

 

技术分享
// ExamTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "stdlib.h"/************************************************************************//*                栈数据结构                                              *//************************************************************************/#define StackSize 1024    //栈大小typedef char DataType;typedef struct  {    DataType data[StackSize];    //栈数组    int top;    //栈顶索引}Stack;//清空栈void InitStack(Stack * s){    if(s == NULL)        return;    s->top = -1;}//判断是否满栈bool StatckEmpty(Stack* s){    if(s == NULL)        return false;    return s->top == StackSize-1;}//进栈void PushStack(Stack* s,DataType x){    if(s == NULL)        return;    if(StatckEmpty(s))        return;    else    {        //规定当前入栈完成后指向当前的数据        s->top = s->top +1;        s->data[s->top] = x;    }}//出栈DataType PopStack(Stack* s){    if(s == NULL)    {        exit(0);    }    if(StatckEmpty(s))    {        printf("Stack is empty .\n");        exit(0);    }    else    {        return s->data[s->top--]; //先用后减    }}//获取栈顶元素DataType GetTop(Stack* s){    if(s == NULL)    {        exit(0);    }    if(StatckEmpty(s))    {        printf("Stack empty . \n");        exit(0);    }    else    {        return s->data[s->top];    }}/************************************************************************//*                队列数据结构(循环队列)                              *//************************************************************************/#define QUEUESIZE 1024typedef struct{    DataType data[QUEUESIZE];    //队列数组    int front;    //队列头    int rear;    //队列尾部}Queue; //初始化队列void InitQueue(Queue* q){    if(q == NULL)        return;    q->front = 0;    q->rear = 0;}//判断栈是否为空bool QueueEmpty(Queue* q){    if(q == NULL)        return false;    else        return q->front == q->rear;}//判断队列是否满bool QueueFull(Queue* q){    if(q == NULL)        return false;    return (q->rear + 1) % QUEUESIZE == q->front; }//入队列void InsertQueue(Queue* q,DataType x){    if(q == NULL)        return;    if(QueueFull(q))    {        printf("Queue Full !\n");    }    else    {        //队尾添加,队尾指向后面一个为空的        q->data[q->rear] = x;        q->rear = (q->rear + 1) % QUEUESIZE;    }}//出队列DataType DelQueue(Queue* q){    DataType x;    if(QueueEmpty(q))    {        printf("Queue is Empty \n");        exit(0);    }    else    {        x = q->data[q->front];        q->front = (q->front + 1) % QUEUESIZE;        return x;    }}//取队头元素DataType GetFrontData(Queue* q){    if(QueueEmpty(q))    {        printf("queue is empty!\n");        exit(0);    }    else    {        return q->data[q->front];    }}//取队尾元素DataType GetRearData(Queue* q){    if(QueueEmpty(q))    {        printf("queue is empty !");        exit(0);    }    else    {        return q->data[q->rear];    }}int _tmain(int argc, _TCHAR* argv[]){    return 0;}
View Code

 

迎战下周自考数据结构实践科目