| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1325 人关注过本帖
标题:出入栈问题,大佬求解!
只看楼主 加入收藏
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
结帖率:100%
收藏
已结贴  问题点数:18 回复次数:3 
出入栈问题,大佬求解!
为什么进行插入时输入插入的元素之后就结束了,程序为什么不能往下进行??
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define ERROR -2
#define OK 1
typedef int Status;
typedef int SElemType;
typedef struct zhan
{
    int date;
    struct zhan *next;
}zhan,*ZhanL;
ZhanL InitStack()
{   
    ZhanL L;
    L=(ZhanL)malloc(sizeof(zhan));
    L->next=NULL;
    return L;
}
void StackPrint(ZhanL L)
{
    while(L->next)
    {
    printf("%d",L->date);
    L=L->next;
    }
}
void Push(ZhanL L,int e)
{
    ZhanL p=(ZhanL)malloc(sizeof(zhan));   
    p->date=e;
    p->next=L->next;
    L->next=p;
}
int pop(ZhanL L)
{
    if (L->next)
    {
        ZhanL s = L->next;//释放空间用
        printf("%d\t",s->date);
        L->next = s->next;
        if (L->next)
        {
            //    printf("%d \n",L->data);
        }
        else
        {
            printf("栈空\n");
        }
        free(s);
    }
    return 0;
}
int zhuanhuan(ZhanL L, int data, int jz)
{
    while (data)
    {
        Push(L, data%jz);
        data = data / jz;
    }

    while (L)
    {
        pop(L);
    }
    return 0;
}
void Translate()
{
    ZhanL s;
    int data, jz;
    s = InitStack();
    printf("请输入一个十进制数\n");   
    scanf("%d", &data);
    printf("请输入转换的进制\n");
    scanf("%d", &jz);
    zhuanhuan(s, data, jz);
}
void zhixing(int a)
{
    int e;
    ZhanL L;
    switch(a)
    {
    case 1:L=InitStack();   break;
    case 2:
           printf("请输入要插入的元素");
           scanf("%d",&e);
           Push(L,e);       break;
    case 3:Translate();     break;
    case 4:StackPrint(L);   break;
    default:       break;
    }
}
int flag=1;
void main()
{
    int menu;
    for(;;)
    {
        do
        {
    printf("**********1.初始化栈**********\n");
    printf("**********2.插入元素**********\n");        
    printf("**********3.数制转换**********\n");   
    printf("**********4.输出栈************\n");
    printf("**********5.程序终止**********\n");
    printf("请输入菜单项:\n");
    scanf("%d",&menu);
        }while(menu<1||menu>5);
            zhixing(menu);
    }
    getchar(); getchar(); getchar();
}
搜索更多相关主题的帖子: data int printf menu next 
2020-03-29 12:04
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:13 
插入函数没问题 你插入之后做了什么操作

https://zh.
2020-03-29 12:33
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
收藏
得分:0 
回复 2楼 lin5161678
输入元素之后点击了Enter键,然后就结束了
2020-03-29 13:29
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define ERROR -2
#define OK 1
typedef int Status;
typedef int SElemType;
typedef struct zhan
{
    int date;
    struct zhan *next;
}zhan,*ZhanL;
ZhanL InitStack()
{   
    ZhanL L;
    L=(ZhanL)malloc(sizeof(zhan));
    L->next=NULL;
    return L;
}
void StackPrint(ZhanL L)
{
    while(L->next)
    {
    printf("666");
    printf("%d\n",L->date);
    L=L->next;
    }
}
void Push(ZhanL L,int e)
{
    ZhanL p=(ZhanL)malloc(sizeof(zhan));   
    p->date=e;
    p->next=L->next;
    L=p;
}
int pop(ZhanL L)
{
    if (L->next)
    {
        ZhanL s = L->next;//释放空间用
        printf("%d\t",s->date);
        L->next = s->next;
        if (L->next)
        {
            //    printf("%d \n",L->data);
        }
        else
        {
            printf("栈空\n");
        }
        free(s);
    }
    return 0;
}
int zhuanhuan(ZhanL L, int data, int jz)
{
    while (data)
    {
        Push(L, data%jz);
        data = data / jz;
    }

    while (L)
    {
        pop(L);
    }
    return 0;
}
void Translate()
{
    ZhanL s;
    int data, jz;
    s = InitStack();
    printf("请输入一个十进制数\n");   
    scanf("%d", &data);
    printf("请输入转换的进制\n");
    scanf("%d", &jz);
    zhuanhuan(s, data, jz);
}
void zhixing(int a)
{
    int e;
    ZhanL L=(ZhanL)malloc(sizeof(zhan));
    switch(a)
    {
    case 1:L=InitStack();   break;
    case 2:
           printf("请输入要插入的元素\n");
           scanf("%d",&e);
           Push(L,e);      break;
    case 3:Translate();     break;
    case 4:StackPrint(L);   break;
    default:       break;
    }
}
int flag=1;
void main()
{
    int menu;
    for(;;)
    {
        do
        {
    printf("**********1.初始化栈**********\n");
    printf("**********2.插入元素**********\n");        
    printf("**********3.数制转换**********\n");   
    printf("**********4.输出栈************\n");
    printf("**********5.程序终止**********\n");
    printf("请输入菜单项:\n");
    scanf("%d",&menu);
        }while(menu<1||menu>5);
            zhixing(menu);
    }
    //getchar(); getchar(); getchar();
}
修改了一下,但是插入的元素数不出来
2020-03-29 15:18
快速回复:出入栈问题,大佬求解!
数据加载中...
 
   



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

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