苏嵌学习日志02

姓名:高翔
日期:2018.9.4
今日学习任务:学习c语言中栈的使用。
今日任务完成情况:今日半天课,任务较少,代码量较小。
e.g.

main.c

#include"stack.h"
#include


int main()
{
    int ret,i;
    Stack s;


    ret=InitStack(&s);  //diy hanshu
    if (ret==SUCCESS)
    {
        printf("init success\n");
    }
    else
    {
        printf("init failure\n");
    }

    ret=EmptyStack(s);
    if (ret==SUCCESS)
    {
        printf("stack is empty\n");
    }
    else
    {
        printf("stack is not empty\n");
    }

    for(i=0;i<5;i++)
    {
        ret=push(&s,i+1); //jin zhan
        if (ret==SUCCESS)
        {
            printf("push %d success\n",i+1);
        }
        else
        {
            printf("push %d failure\n",i+1);
        }
    }

        ret = GetTop(s);
        if(ret==FAILURE)
        {
            printf("get top failure\n");
        }
        else
        {
            printf("top is %d \n",ret);
        }



    for(i=0;i<5;i++)
    {
        ret=pop(&s);
        if(ret==SUCCESS)
        {
            printf("pop is failure \n");
        }
        else
        {
            printf("pop %d success\n",ret);
        }

    }
        ret = GetTop(s);
        if(ret==FAILURE)
        {
            printf("get top failure\n");
        }
        else
        {
            printf("top is %d \n",ret);
        }

    ret=ClearStack(&s);
    if(ret==FAILURE)
    {
        printf("clear failure\n");
    }
    else
    {
        printf("clear success\n");
    }

        ret = GetTop(s);
        if(ret==FAILURE)
        {
            printf("get top failure\n");
        }
        else
        {
            printf("top is %d \n",ret);
        }



    return 0;
}

stack.c

#include"stack.h"
#include

int InitStack(Stack *s)
{
    if(NULL==s)
    {
        return FAILURE;
    }
    s->top=-1;

    return SUCCESS;
}

int EmptyStack(Stack s)
{
    return (s.top==-1)?SUCCESS:FAILURE;
}

int push(Stack *s, int e)
{
    if(NULL==s)
    {
        return FAILURE;
    }
    if(s->top==9)   //zhan man
    {
        return FAILURE;
    }
    s->data[s->top+1]=e;
    s->top++;

    return  SUCCESS;
}


int GetTop(Stack s)
{
    if(s.top==-1)
    {
        return FAILURE;
    }

    return s.data[s.top];
}

int pop(Stack *s)
{
    int e;
    if(NULL==s)
    {
        return FAILURE;
    }
    if(s->top==-1)
    {
        return FAILURE;
    }
    e=s->data[s->top];
    s->top--;

    return e;
}

int ClearStack(Stack *s)
{
    if(NULL==s)
    {
        return FAILURE;
    }

    s->top=-1;
    return SUCCESS;
}

sort.c

#include
#include"stack.h"
#include
int main()
{
    int i,num;
    Stack s1, s2;

    if(InitStack(&s1)==FAILURE||InitStack(&s2)==FAILURE )
    {
        printf("init failure\n");
        exit(1);
    }
    for(i=0;i<5;i++)
    {
        scanf("%d",&num);
        if(i==0)
        {
            push(&s1,num);
        }
        else
        {
            while(numpush(&s2,pop(&s1));
            }
            push(&s1,num);
            while(EmptyStack(s2)!=SUCCESS)
            {
                push(&s1,pop(&s2));
            }
        }
    }
    for(i=0;i<5;i++)
    {
        printf("%d",pop(&s1));
    }
    printf("\n");

    return 0;
}

stack.h

#ifndef STACK_H
#define STACK_H

#define MAXSIZE 10
#define SUCCESS 10000
#define FAILURE 10001

struct stack
{
    int data[MAXSIZE];
    int top;           //zhan ding zhi zhen
};
typedef struct stack Stack;

#endif

今日开发中出现的问题汇总:关键词的拼写错误,对于栈概念的使用还是不够清楚
今日未解决的问题:今天下午到晚上三场考试 没有写作业
今日开发收获:
数据结构 和 栈 的概念
堆栈:先出后进
栈底是不可操作的 栈顶是可操作的
插入元素叫入栈 删除元素叫出栈
栈的信息:容量(固定) 长度(已用容量) 栈顶指针(下标)

结构体:struct
e.g.
struct
{
int data[10];
int top;
}

线性结构: 顺序存储 链式存储

自我评价
学习还是不够认真

你可能感兴趣的:(苏嵌学习日志02)