| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 328 人关注过本帖
标题:栈,输入I入栈,输入o出栈,输入10个数看是否正确,如果栈内没有元素出栈就 ...
只看楼主 加入收藏
NeQhk
Rank: 2
等 级:论坛游民
威 望:1
帖 子:164
专家分:85
注 册:2014-7-19
结帖率:69.23%
收藏
已结贴  问题点数:10 回复次数:1 
栈,输入I入栈,输入o出栈,输入10个数看是否正确,如果栈内没有元素出栈就错误,最后栈不空也错误,错哪里了。。
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#define SIZE  50
#define ADD 20
typedef char ElemType ;
typedef struct node{
     ElemType  *base;
     ElemType  *top;
     int stacksize;
}stack;

void initstack (stack *s)
{
    s->base=(ElemType*)malloc (SIZE* sizeof(ElemType));
    if ( !s->base )
    {
        exit(0);
    }
    s->top=s->base;
    s->stacksize=SIZE;
}

void push(stack *s,ElemType e)
{
    if(s->top-s->base >= s->stacksize)
    {
        s->base=(ElemType *)realloc(s->base,(s->stacksize+ADD)*
    sizeof    (ElemType));
    if(!s->base)
    {
        exit (0);
    }
    }
    *s->top++=e;
}
void pop (stack*s,ElemType *e)
{
    if(s->base ==s->top)
      {
          return;
      }
      *e=*--(s->top);
}
void empty(stack *s)
{
    if(s->top==s->base)
    return 1;
    return 0;
}
void stacksize1(stack s)
{
    return (s.top-s.base);
}
int main()
{
    stack s;
    char ch;
    initstack(&s);
    scanf("%c",&ch);
    while(ch!='\n')
    {
        if(ch=='I'||ch=='i')
          push(&s,ch);
        if(ch=='o'||ch=='O')
        {
           if(empty (&s))
           {
               printf("false");
               break;
           }
           else{
               pop(&s,&ch);
           }
        }
        scanf("%d",&ch);
    }
    if(empty(&s))
    {
        printf("true");
    }
    else{
        printf("false");
    }
    return 0;
}
搜索更多相关主题的帖子: include 
2015-04-22 12:39
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:10 
你的程序看着头晕,找了个前几天学习的代码给你参考。

程序代码:
#include <stdio.h>
#include <stdlib.h>


typedef int Item;

typedef struct Node
{
    Item item;
    struct Node * pNext;
}NODE, *PNODE;

typedef struct Stack
{
    PNODE pTop;
    PNODE pBottom;
} STACK, *PSTACK;

void init(PSTACK pS);
void push(PSTACK ps, Item item);
void traverse(PSTACK ps);
int pop(PSTACK pS, Item * item);
void clear(PSTACK pS);
int empty( PSTACK pS);


int main()
{
    ....
}

void init(PSTACK pS)
{
    pS->pTop = (PNODE)malloc(sizeof(NODE));
    if(NULL == pS->pTop)
    {
        fprintf(stderr, "内存分配失败!");
        exit(-1);
    }
    pS->pTop->pNext = NULL;
    pS->pBottom = pS->pTop;    
}

void push(PSTACK pS, int val)
{
    PNODE pNew = (PNODE)malloc(sizeof(NODE));

    pNew->item = val;
    pNew->pNext = pS->pTop;
    pS->pTop = pNew;
}

void traverse(PSTACK pS)
{
    PNODE p = pS->pTop;
    while (p != pS->pBottom)
    {
        printf("%d ", p->item);
        p = p->pNext;
    }
    printf("\n");
}

int empty(PSTACK pS)
{
    if(pS->pTop == pS->pBottom)
        return 1;
    else
        return 0;
}

int pop(PSTACK pS, int * pVal)
{
    if ( empty(pS) )
    {
        return 0;
    }
    else
    {
        PNODE r = pS->pTop;
        *pVal = r->item;
        pS->pTop = r->pNext;
        free(r);
        r = NULL;

        return 1;
    }
}

void clear(PSTACK pS)
{
    if (empty(pS))
    {
        return;
    }
    else
    {
        PNODE p = pS->pTop;
        PNODE q = NULL;

        while (p != pS->pBottom)
        {
            q = p->pNext;
            free(p);
            p = q;
        }
        pS->pTop = pS->pBottom;
    }
}

人有多懒,编程就有多难。
2015-04-22 15:21
快速回复:栈,输入I入栈,输入o出栈,输入10个数看是否正确,如果栈内没有元素出 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027048 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved