标题:C语言数据结构问题,求解
只看楼主
qq1761442432
Rank: 2
等 级:论坛游民
帖 子:14
专家分:14
注 册:2015-1-13
 问题点数:0 回复次数:2 
C语言数据结构问题,求解
# include <stdio.h>
# include <stdlib.h>
# include <malloc.h>
typedef struct node
{
    int data; // 数据域
    struct stack *pnext; //指针域
}NODE, *PNODE;
typedef struct stack
{
    PNODE top; // 栈的顶部
    PNODE bottom; // 栈的底部
} STACK, *PSTACK;
/* * * * * * * 函数声明* * * * * * * */
void init(PSTACK ps);
// 初始化函数
void push(PSTACK ps,int val);
// 压栈
void traversal(STACK ps);
// 遍历输出
bool empty(PSTACK ps);
// 判断是否为空
int main ( void )
{
    STACK ps; // 创建
    init (&ps);
    push (&ps,6);
    push (&ps,8);
    traversal(&ps);
    return 0;
}
void init (PSTACK ps)
{
    ps->bottom=(PNODE)malloc(sizeof (NODE));
    // 为栈的底部分配字节
    if (ps->bottom == NULL)
    {
        printf("分配失败!\n");
        exit (-1);
    }
    ps->top=ps->bottom;
    //栈的底部和顶部指向同一空间
    ps->bottom->pnext=NULL;
    //可改为ps->top
    //栈的底部指针域为空
}
void push(PSTACK ps,int val)
{
    PNODE pnew=(PNODE)malloc(sizeof (NODE));
    // 开辟新字节
    if (pnew==NULL)
    {
        printf("分配失败!\n");
        exit(-1);
    }
    else
    {
       pnew->data=val;
       // 将val的值赋给pnew的数据域
   pnew->pnext=ps->top->pnext;
       // 连接top和pnew
       ps->top=pnew;
       // 连接pnew和空节点
    }
    return;
}
bool empty(PSTACK ps)
{
    // 如果顶部等于底部,说明为空
    if (ps->top==ps->bottom)
    return true;
    else
    return false;
}
void traversal(PSTACK ps)
{
    PNODE p= ps->top;
    while (p !=ps->bottom)
    {
        // 输出top的数据
        printf("%d   ",p->data);
        p=p->pnext;
    }
    printf("\n");
    return;
}

不知道哪里出错了?求指出?
搜索更多相关主题的帖子: include bottom C语言 
2015-05-15 22:09
qq1761442432
Rank: 2
等 级:论坛游民
帖 子:14
专家分:14
注 册:2015-1-13
得分:0 
???
2015-05-15 22:19
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
# include <stdio.h>
# include <stdlib.h>
# include <malloc.h>
typedef struct node
{
    int data; // 数据域
    struct node *pnext; //指针域
}NODE, *PNODE;
typedef struct stack
{
    PNODE top; // 栈的顶部
    PNODE bottom; // 栈的底部
} STACK, *PSTACK;
/* * * * * * * 函数声明* * * * * * * */
void init(PSTACK ps);
// 初始化函数
void push(PSTACK ps,int val);
// 压栈
void traversal(PSTACK ps);
// 遍历输出
bool empty(PSTACK ps);
// 判断是否为空
int main ( void )
{
    STACK ps; // 创建
    init (&ps);
    push (&ps,6);
    push (&ps,8);
    traversal(&ps);
    return 0;
}
void init (PSTACK ps)
{
    ps->bottom=(PNODE)malloc(sizeof (NODE));
    // 为栈的底部分配字节
    if (ps->bottom == NULL)
    {
        printf("分配失败!\n");
        exit (-1);
    }
    ps->top=ps->bottom;
    //栈的底部和顶部指向同一空间
    ps->bottom->pnext=NULL;
    //可改为ps->top
    //栈的底部指针域为空
}
void push(PSTACK ps,int val)
{
    PNODE pnew=(PNODE)malloc(sizeof (NODE));
    // 开辟新字节
    if (pnew==NULL)
    {
        printf("分配失败!\n");
        exit(-1);
    }
    else
    {
       pnew->data=val;
       // 将val的值赋给pnew的数据域
   pnew->pnext=ps->top->pnext;
       // 连接top和pnew
       ps->top=pnew;
       // 连接pnew和空节点
    }
    return;
}
bool empty(PSTACK ps)
{
    // 如果顶部等于底部,说明为空
    if (ps->top==ps->bottom)
    return true;
    else
    return false;
}
void traversal(PSTACK ps)
{
    PNODE p= ps->top;
    while (p !=ps->bottom)
    {
        // 输出top的数据
        printf("%d   ",p->data);
        p=p->pnext;
    }
    printf("\n");
    return;
}

剑栈风樯各苦辛,别时冰雪到时春
2015-05-15 22:36



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




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

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