| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 607 人关注过本帖
标题:编译时总是要显示identifier 'is_empty'?求高手指教
只看楼主 加入收藏
bccnjj
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2012-2-16
结帖率:0
收藏
 问题点数:0 回复次数:5 
编译时总是要显示identifier 'is_empty'?求高手指教
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h" //包含了exit函数
//定义了一个数组类型,该数据类型的名字叫struct Arr,该数据类型含有三个成员。
struct Arr
{
    int *pBase;//存储的是数组第一个元素的地址
    int len;//数组所能容纳的最大元素的个数
    int cnt;//当前数组有效元素的个数
    //int increment;//自动增长因子
};
void init_arr(struct Arr *parr);
bool append_arr(struct Arr *parr, int val);//追加
bool insert_arr(struct Arr *parr, int postion, int val);// postion的值从1开始
bool delete_arr(struct Arr *parr, int postion, int *pval);
//int get();
bool is_empty(struct Arr *parr);
void sort_arr(struct Arr *parr);
bool is_full(struct Arr *parr);
void show_arr(struct Arr *parr);
void inversion_arr(struct Arr *parr);
int main(void)
{
    struct Arr arr;
    int val;
    init_arr(&arr, 6);
//    printf("%d\n", arr.len);
    show_arr(&arr);

    append_arr(&arr, 1);
    if (delete_arr(&arr, 1, &val))
    {
        printf("删除成功!\n");   
        printf("你删除的元素是:%d\n", val);
    }
    else
    {
        printf("删除失败!\n");   
    }
    inversion_arr(&arr);
    sort_arr(&arr);
/*    append_arr(&arr, 2);
    append_arr(&arr, 3);
    append_arr(&arr, 4);
    append_arr(&arr, 5);
    insert_arr(&arr, 6, 100)
    if ( append_arr(&arr, 8))
    {
        printf("追加成功\n");
    }
    else
    {
        printf("追加失败!\n");
    }
    */
    return 0;
}
void init_arr(struct Arr *parr, int len)
{
    parr->pBase = (int *)malloc(sizeof(int) * len);
    if (NULL == parr->pBase)
    {
        printf("动态内存分配失败!\n");
        exit(-1);//终止整个程序
    }
    else
    {
        parr->len = len;
        parr->cnt = 0;
    }
    return;
}
bool is_empty(struct Arr *parr)
{
    if (0 == parr->cnt)
        return true;
    else
        return false;
   
}
bool is_full(struct Arr *parr)
{
    if (parr->cnt == parr->len)
        return true;
    else
        return false;
}
void show_arr(struct Arr *parr)
{
    if ( is_empty(parr) )
    {
        //提示用户数组为空
        printf("数组为空!\n");
    }
    else
    {
        //输出数组有效内容
        for (i=0; i<parr->cnt; ++i)
        
            printf("%d ",parr->pBase[i]);
        printf("\n");
        
    }

}
bool append_arr(struct Arr *parr, int val)
{
    //满就返回false
    if ( is_full(parr))
        return false;
    else
        //不满时追加
        parr->pBase[parr->cnt] = val;
        (parr->cnt)++;
        return true;
   
}
bool insert_arr(struct Arr *parr, int postion, int val)
{
    int i;
    if (is_full(parr))
        return false;

    if (postion<1 || postion>parr->cnt+1)
        return false;

    for (i=parr->cnt-1; i>=postion-1; --i)
    {
        parr->pBase[i+1] = parr->pBase[i];
    }
    parr->pBase[postion-1] = val;
    (parr->cnt)++;
    return true;
}
bool delete_arr(struct Arr *parr, int postion, int *pval);
{
    int i;
    if (is_empty(parr))
        return false;
    if (postion<1 || postion>parr->cnt)
        return false;

    *pval = parr->pBase[postion-1];
    for (i=postion; i<parr->cnt; ++i)
    {
        parr->pBase[i-1] = parr->pBase[i]
    }
    parr->cnt--;
    return true;
}
void inversion_arr(struct Arr *parr)
{
    int i = 0;
    int j = parr->cnt-1;
    int t;

    while (i < j)
    {
        t = parr->pBase[i];
        parr->pBase[i] = parr->pBase[j];
        parr->pBase[j] = t;
        ++i;
        --j;
    }
    return;
}
void sort_arr(struct Arr *parr)
{
    int i, j;
   
    for (i=0; i<parr->cnt; ++i)
    {
        for (j=i+1; j<parr->cnt; ++j)
        {
            if (parr->pBase[i] > parr->pBase[j])
            {
                t = parr->pBase[i];
                parr->pBase[i] = parr->pBase[j];
                parr->pBase[j] = t;
            }            
        }
    }
}
搜索更多相关主题的帖子: parr include 元素 
2012-07-22 16:44
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 

程序代码:
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h" //包含了exit函数

#define bool int  /* c99以前没有bool,现在支持c99好像也不多 */
#define true 1
#define false 0

//定义了一个数组类型,该数据类型的名字叫struct Arr,该数据类型含有三个成员。
struct Arr
{
    int *pBase;//存储的是数组第一个元素的地址
    int len;//数组所能容纳的最大元素的个数
    int cnt;//当前数组有效元素的个数
    //int increment;//自动增长因子
};
void init_arr(struct Arr *parr);  /* 函数声明与定义不符,漏了一个int */
bool append_arr(struct Arr *parr, int val);  //追加
bool insert_arr(struct Arr *parr, int postion, int val);// postion的值从1开始
bool delete_arr(struct Arr *parr, int postion, int *pval);
//int get();
bool is_empty(struct Arr *parr);
void sort_arr(struct Arr *parr);
bool is_full(struct Arr *parr);
void show_arr(struct Arr *parr);
void inversion_arr(struct Arr *parr);
int main(void)
{
    struct Arr arr;
    int val;
    init_arr(&arr, 6);
//    printf("%d\n", arr.len);
    show_arr(&arr);

    append_arr(&arr, 1);
    if (delete_arr(&arr, 1, &val))
    {
        printf("删除成功!\n");  

        printf("你删除的元素是:%d\n", val);
    }
    else
    {
        printf("删除失败!\n");  

    }
    inversion_arr(&arr);
    sort_arr(&arr);
/*    append_arr(&arr, 2);
    append_arr(&arr, 3);
    append_arr(&arr, 4);
    append_arr(&arr, 5);
    insert_arr(&arr, 6, 100)
    if ( append_arr(&arr, 8))
    {
        printf("追加成功\n");
    }
    else
    {
        printf("追加失败!\n");
    }
    */
    return 0;
}
void init_arr(struct Arr *parr, int len)
{
    parr->pBase = (int *)malloc(sizeof(int) * len);
    if (NULL == parr->pBase)
    {
        printf("动态内存分配失败!\n");
        exit(-1);//终止整个程序
    }
    else
    {
        parr->len = len;
        parr->cnt = 0;
    }
    return;
}
bool is_empty(struct Arr *parr)
{
    if (0 == parr->cnt)
        return true;
    else
        return false;
  

}
bool is_full(struct Arr *parr)
{
    if (parr->cnt == parr->len)
        return true;
    else
        return false;
}
void show_arr(struct Arr *parr)
{
    /* 我就是个眼科大夫,没定义i就使用 */
    if ( is_empty(parr) )
    {
        //提示用户数组为空
        printf("数组为空!\n");
    }
    else
    {
        //输出数组有效内容
        for (i=0; i<parr->cnt; ++i)
       

            printf("%d ",parr->pBase[i]);
        printf("\n");
       

    }

}
bool append_arr(struct Arr *parr, int val)
{
    //满就返回false
    if ( is_full(parr))
        return false;
    else
        //不满时追加
        parr->pBase[parr->cnt] = val;
        (parr->cnt)++;
        return true;
  

}
bool insert_arr(struct Arr *parr, int postion, int val)
{
    int i;
    if (is_full(parr))
        return false;

    if (postion<1 || postion>parr->cnt+1)
        return false;

    for (i=parr->cnt-1; i>=postion-1; --i)
    {
        parr->pBase[i+1] = parr->pBase[i];
    }
    parr->pBase[postion-1] = val;
    (parr->cnt)++;
    return true;
}
bool delete_arr(struct Arr *parr, int postion, int *pval); //←这个我就不说什么了.......注意冒号
{
    int i;
    if (is_empty(parr))
        return false;
    if (postion<1 || postion>parr->cnt)
        return false;

    *pval = parr->pBase[postion-1];
    for (i=postion; i<parr->cnt; ++i)
    {
        parr->pBase[i-1] = parr->pBase[i];
    }
    parr->cnt--;
    return true;
}
void inversion_arr(struct Arr *parr)
{
    int i = 0;
    int j = parr->cnt-1;
    int t;

    while (i < j)
    {
        t = parr->pBase[i];
        parr->pBase[i] = parr->pBase[j];
        parr->pBase[j] = t;
        ++i;
        --j;
    }
    return;
}
void sort_arr(struct Arr *parr)
{
    int i, j;  //没定义t就使用
  

    for (i=0; i<parr->cnt; ++i)
    {
        for (j=i+1; j<parr->cnt; ++j)
        {
            if (parr->pBase[i] > parr->pBase[j])
            {
                t = parr->pBase[i];
                parr->pBase[i] = parr->pBase[j];
                parr->pBase[j] = t;
            }           

        }
    }
} 

2012-07-22 16:56
bccnjj
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2012-2-16
收藏
得分:0 
回复 2楼 随风飘荡
请高手是什么原因?
怎么还是原来的错误啊?


[ 本帖最后由 bccnjj 于 2012-7-23 13:34 编辑 ]
2012-07-23 13:33
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
敢不敢不要复制,能看看我给加的注释不
2012-07-23 13:52
bccnjj
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2012-2-16
收藏
得分:0 
回复 4楼 随风飘荡
不好意思啊,我正在看当中
2012-07-23 13:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这样的错误,代码又如此长,说明这是你复制黏贴回来的,既没有用手敲一次,连编译错误信息也不懂看,完全是应付式读书(连学习都算不上故称读书)。

授人以渔,不授人以鱼。
2012-07-23 14:00
快速回复:编译时总是要显示identifier 'is_empty'?求高手指教
数据加载中...
 
   



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

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