码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-01-07 01:50:00      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

编写完成重点数据结构和算法: 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 1024
typedef 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

 

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

标签:

原文地址:http://www.cnblogs.com/sdnyzhl/p/4207446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!