| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 589 人关注过本帖
标题:我程序编完了,不会改。谁帮我改好了,我就把所有的分都给谁!
只看楼主 加入收藏
zitong1987611
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-4-18
收藏
 问题点数:0 回复次数:3 
我程序编完了,不会改。谁帮我改好了,我就把所有的分都给谁!
我的题目是:用链栈实现将十进制数转化为八进制数,我编完了,可我不会改啊,都改了无数个日夜了,还是改不好。有哪位好心的人能帮帮我啊?将不胜感激啊!。程序就在下面,帮帮忙,救救我吧,交不上程序我就挂了啊。呜呜呜呜呜,要求输入11输出13
#include<stdio.h>
#include<math.h>
typedef struct node
{
    int data;
    struct node *next;
}LinkStack;
void init_stack(LinkStack *top)
{
    top->data='-1';
    top->next=NULL;
}
int decide_empty(LinkStack  *top)
{
    if(top->data=='-1')
        return (1);
    else
        return (0);
}
LinkStack* Enter_stack(LinkStack *top,int x)
{
    top=(LinkStack*)malloc(sizeof(LinkStack));
    top->data=x;
    top->next=NULL;

    top=top->next;
    printf("\nOK!\n");
    return(top);
}
int del_stack(LinkStack *top )
{
    LinkStack *p;
    int a;
    if(top==NULL)
    {
        printf("\n栈为空!");
        return 0;
    }
    else
    {
        a=top->data;
        p=top;
        top=top->next;
        free(p);
        return a;
    }
}

main()
{
    LinkStack LS,*L=&LS;
    int n,e;
    init_stack(L);
    printf("please input a decimal number:");
    scanf("%d",&n);
    if(n<=0)
    printf("error due to the wrong input!\n");
    while(n)
    {
        Enter_stack( L ,n%8);
        n=n/8;
    }
    printf("the changed number is:\n");
    while(decide_empty(L))
    {
        e=del_stack(L);
        printf("\t%d",e);
    }
    getch();
}
搜索更多相关主题的帖子: 不胜感激 include 八进制 十进制 
2008-04-21 22:59
布拉莫斯
Rank: 1
来 自:中国太平洋舰队
等 级:新手上路
帖 子:169
专家分:0
注 册:2007-3-31
收藏
得分:0 
我有空就帮你看看。。。。。

[[it] 本帖最后由 布拉莫斯 于 2008-4-21 23:25 编辑 [/it]]

真理往往掌握在少数人手中,可现实却是少数服从多数!
2008-04-21 23:15
dongchongcao
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-5-25
收藏
得分:0 
#include <stdlib.h>

#define TRUE 1
#define FALSE 0
#define NULL 0

typedef int ElementType;
typedef struct node ...{
    ElementType data;
    struct node *next;
}StackNode, *LinkStack;

void InitStack(LinkStack top) ...{
    top->next = NULL;
}

int IsEmpty(LinkStack top) ...{
    if(top->next == NULL) return TRUE;
    return FALSE;
}

int Push(LinkStack top, ElementType element) ...{
    StackNode *temp;
    temp = (StackNode *)malloc(sizeof(StackNode));
    if(temp == NULL) return FALSE;
    temp->data = element;
    temp->next = top->next;
    top->next = temp;
    return TRUE;
}

int Pop(LinkStack top, ElementType *element) ...{
    if(IsEmpty(top)) return FALSE;
    StackNode *temp = top->next;
    *element = temp->data;
    top->next = temp->next;
    free(temp);
    return TRUE;
}

void GetTop(LinkStack top, ElementType *element)
{
    *element = top->next->data;
}
你可以参考一下,你程序问题不大

2008-04-22 00:58
布拉莫斯
Rank: 1
来 自:中国太平洋舰队
等 级:新手上路
帖 子:169
专家分:0
注 册:2007-3-31
收藏
得分:0 
你的程序错的确实不多,不过,我改动比较大!
你参考一下吧!
#include<stdio.h>
#include<math.h>
typedef struct node   /*建议用双向链表*/
{
    int data;
    struct node *next;
    struct node *prev;  
}LinkStack;
void init_stack(LinkStack *top)
{
    top->data=-1;
    top->next=NULL;
    top->prev=NULL;
}


LinkStack* Enter_stack(LinkStack *p,int x)
{
    LinkStack *temp;
    temp=(LinkStack *)malloc(sizeof(LinkStack));
    temp->data=x;
    temp->next=NULL;
    temp->prev=p;
    p->next=temp;
    p=temp;
    return p;
}
void del_stack(LinkStack *top )
{
    LinkStack *p;
    int a;
    p=(LinkStack *)malloc(sizeof(LinkStack));
     if(top->prev==NULL)
    {
        printf("\n栈为空!");
        return ;      /*这里就不好区分返回的0是数值0还是代表结束的0*/
    }
    else
    {
        
        while(top->prev!=NULL)
        {
        a=top->data;
        p=top;
        top=top->prev;  /*进行回溯*/
        top->next=NULL;
        printf("%d",a);   /*所以建议一边删除一边输出*/
        free((void*)p);
        }
    }
}

main()
{   
    LinkStack *p;
    int n;
    p=(LinkStack *)malloc(sizeof(LinkStack));
    init_stack(p);
    printf("please input a decimal number:");
    scanf("%d",&n);
    if(n<=0)
    printf("error due to the wrong input!\n");
    while(n)
    {
        p=Enter_stack(p,n%8);
        n=n/8;
    }
    printf("the changed number is: ");
    if(p->prev!=NULL)
        del_stack(p);
    printf("\n");
    getch();
}

vc++ 6.0 下编译通过!

真理往往掌握在少数人手中,可现实却是少数服从多数!
2008-04-22 20:49
快速回复:我程序编完了,不会改。谁帮我改好了,我就把所有的分都给谁!
数据加载中...
 
   



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

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