标题:初学栈 遇到问题了 谁能帮下我么
只看楼主
kd83kdi93
Rank: 2
等 级:论坛游民
帖 子:65
专家分:52
注 册:2011-9-18
结帖率:70%
已结贴  问题点数:5 回复次数:4 
初学栈 遇到问题了 谁能帮下我么
#include <stdio.h>
#include <stdlib.h>

struct st
{
    int a;
    struct st * pNext;
};

struct zh
{
    struct st * pTop;
    struct st * pBottom;
};

struct zh * create();   //创建栈
void push(struct zh *,int);  //压栈
void show(struct zh *);   //遍历


int main()
{
    int num_z;
    struct zh * pZh;
    printf("请输入栈数量:");
    scanf("%d",&num_z);
    pZh=create();          //这里的pZh还有地址
    push(pZh,num_z);         //传入的pZh就是别的地址了
   
    show(pZh);


}

struct zh * create()
{
    struct st * pHead;
    struct zh * Zh;
    pHead=(struct st *)malloc(sizeof(struct st ));
    pHead->pNext =NULL;
    Zh->pBottom =pHead;
    Zh->pTop =pHead;
    return Zh ;
}

void push(struct zh * pZh,int a)             //地址不是原来的  所以也输出不了
{
    int b;
    struct st * pAdd;
   
    for(b=1;b<=a;b++)
    {
        
        pAdd =(struct st *)malloc(sizeof(struct st));
        printf("请输入第%d个栈的值:",b);
        scanf("%d",&pAdd->a  );
        pAdd->pNext =pZh->pTop ;
        pZh->pTop  =pAdd;
    }
   
   
    printf("压栈完毕");
    return;
}

void show(struct zh * pZh)
{
    while(pZh->pTop !=NULL )
    {
        printf("%d ",pZh->pTop ->a );
        pZh->pTop =pZh->pTop ->pNext ;
    }
    printf("\n输出完毕");
    return;
}

 也许要有别的问题但我没有发现   希望能够得到解答  谢谢。
搜索更多相关主题的帖子: include create 
2011-10-31 21:36
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
得分:3 
程序代码:
void show(struct zh * pZh)
{
    while(pZh->pTop->pNext !=NULL )///////////
    {
        printf("%d ",pZh->pTop ->a );
        pZh->pTop =pZh->pTop ->pNext ;
    }
    printf("\n输出完毕");
    return;
}
2011-10-31 22:00
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
得分:0 
回复 2楼 laznrbfe
还有主函数需要返回一个整数值。
return 0;
2011-10-31 22:01
zqllsszhuqi
Rank: 2
等 级:论坛游民
帖 子:26
专家分:45
注 册:2010-3-29
得分:3 
#define STACK_INIT_SIZE 100
#define STACK_INCREMENT 10
typedef char SElemType;
typedef struct Stack{
    SElemType *base;
    SElemType *top;
    int stacksize;
}Stack;
void InitStack(Stack &S)
{
    S.base=( SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
    S.top=S.base;
    S.stacksize= STACK_INIT_SIZE;
}
void Push( Stack &S,char e)
{
    if(S.top-S.base>= S.stacksize)
{
        S.base=(SElemType*)realloc(S.base,(S.stacksize+ STACK_INCREMENT)*sizeof(SElemType));
        S.top=S.base+S.stacksize;
        S.stacksize+= STACK_INCREMENT;
    }
    *S.top=e;
    S.top++;
}
int Pop(Stack &S,char &e)
{
if(S.top==S.base)
return 0;
else
{
        e=*--S.top;
return 1;
}
}
int    StackEmpty(Stack S)
{
    if(S.top==S.base)
        return 1;
else
        return 0;
}
void ClearStack(Stack &S)
 {
   S.top=S.base;
 }
2011-11-01 09:06
zqllsszhuqi
Rank: 2
等 级:论坛游民
帖 子:26
专家分:45
注 册:2010-3-29
得分:0 
上面发上去排版就有些为题,楼主整理一些吧,对了在告诉你,在除了显示函数(display(),show())以外,一般不在函数里面输出像你说的“压栈完毕”这些的。。。
2011-11-01 09:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-353939-1-1.html




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

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