| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1229 人关注过本帖
标题:编译错误哪里错误了呢 请大佬分析下
只看楼主 加入收藏
风流泰
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2018-9-29
结帖率:87.88%
收藏
已结贴  问题点数:20 回复次数:3 
编译错误哪里错误了呢 请大佬分析下
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

typedef int bool;

typedef struct Node{
    int data;
    struct Node * pNext;
}NODE,*PNODE;


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


//函数声明
void init(PSTACK pS);//初始化
void push(PSTACK pS,int val);//压栈
void traverse(PSTACK pS);//遍历输出栈
bool empty(PSTACK pS);//判断是否栈为空
void pop(PSTACK,int *);//出栈
void clear(PSTACK pS);//清空栈


int main(void){
    STACK S;
    int val=0;
    init(&S);//完成初始化,目的就是造出一个空栈
    push(&S,1);//压栈
    push(&S,2);
    push(&S,3);
    push(&S,4);
    push(&S,5);
    push(&S,6);
    traverse(&S);
    if(pop(&S,&val)){
        printf("出栈成功,出栈的数是%d\n",val);
    }
    else{
        printf("出栈失败!\n");
    }
    traverse(&S);//遍历输出
    clear(&S);
    traverse(&S);
    return 0;
}


//初始化
void init(PSTACK pS){
    pS->pTop=(PNODE)malloc(sizeof(NODE));
    if(NULL==pS->pTop){
        printf("动态内存分配失败!\n");
        exit(-1);
    }
    else{
        pS->pTop=pS->pBottom;
        pS->pTop->pNext=NULL;
    }
}


//压栈
void push(PSTACK pS,int val){
    PNODE pNew=(PNODE)malloc(sizeof(NODE));//动态造出一个新的结点
    pNew->data=val;
    pNew->pNext=pS->pTop;
    pS->pTop=pNew;
    return;
}


//遍历输出
void traverse(PSTACK pS){
    PNODE p=pS->pTop;
    while(p!=pS->pBottom){
        printf("%d\t",p->data);
        p=p->pNext;
        
    }
    printf("\n");
    return ;
}


//判断栈是否为空
bool empty(PSTACK pS){
    if(pS->pTop=pS->pBottom){
        return true;
    }
    else{
        return false;
    }
}


//出栈
void pop(PSTACK pS,int * pVal){
    if(empty(pS)){
        return false;  
    }
    else{
        PNODE r=pS->pTop;
        *pVal=r->data;
        pS->pTop=r->pNext;
        free(r);
        r=NULL;
        return true;
    }
}


//清空栈
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;
    }
}
//错误代码为  39    5    C:\Users\WP-S10\Desktop\练习\栈代码练习.c    [Error] void value not ignored as it ought to be
搜索更多相关主题的帖子: int void push  return 
2019-02-13 22:49
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
typedef int bool; 这是准备干啥,int 是关键字  bool 同样是关键字

DO IT YOURSELF !
2019-02-14 11:11
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:10 
if(pop(&S,&val)){//函数pop(&S,&val)没有返回值
void pop(PSTACK,int *);//出栈  ----> int pop(PSTACK,int *);
void pop(PSTACK pS,int * pVal){  ----> int pop(PSTACK pS,int * pVal){
2019-02-14 13:47
风流泰
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2018-9-29
收藏
得分:0 
回复 3楼 jklqwe111
好的谢谢
2019-02-15 12:40
快速回复:编译错误哪里错误了呢 请大佬分析下
数据加载中...
 
   



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

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