免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1623 | 回复: 5
打印 上一主题 下一主题

[C++] 求助:我这个程序哪出错了?(顺序表问题) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-14 14:22 |只看该作者 |倒序浏览
//问题:为什么实现不了插入,输不出来?

#include <iostream>
using namespace std;
typedef struct splist{
        int *date;
        int size;
        int maxsize;
}list;

list initlist(list &l)
{
        cout<<"请输入初始化顺序表的最大存储数据元素个数:"<<endl;
        int a;
        cin>>a;
        if ((l.date=(int*)malloc(a*sizeof(int)))==NULL)
        {
                cout<<"分配内存错误\n"<<endl;
                exit(1);
        }
        l.maxsize=a;
        l.size=0;
        cout<<"请输入元素值,输入0时结束插入操作:"<<endl;
        int i;
        for (i=0;i<l.maxsize;i++)
        {
                int a;
                cin>>a;
                if(a!=0) {l.date=a; l.size++;}
                else break;
        }
        return(l);
}

void outputlist(list *l)
{
        cout<<"顺序表为:"<<endl;
        int i=0;
        while (i<l->size)
        {
                cout<<l->date<<"     ";
                i++;
        }
        cout<<endl;
}

void insertlist(list &l)
{
        if(l.size==0) cout<<"顺序表为空"<<endl;
        cout<<"请输入元素插入位置:";
        int i;
        for(;;)
        {
                cin>>i;
                if(i<1||i>l.size) cout<<"输入错误!请重新输入插入位置;";
                else break;
        }
        cout<<"请输入要插入的元素:";
        int a,n;
        cin>>a;
        if (l.size==l.maxsize)
        {
                l.date=(int*)realloc(l.date,(l.size+10)*sizeof(int));
        }
        l.size=+1;
        l.date[l.size-1]=0;
        for (n=l.size-2;n>=i-1;n--)  l.date[n+1]=l.date[n];
        l.date[i-1]=a;
        outputlist(&l);       
}



int main()
{
        int a,b;
        list l;
        for( ; ; )
        {
                cout<<"1.初始化\n";
                cout<<"2.插入\n";
                cout<<"3.输出\n";
                cout<<"Input 1-3: ";
                cin>>a;
                switch (b=a)
                {
                case 1: initlist(l);
                        break;
                case 2: insertlist(l);
                        break;
                case 3: outputlist(&l);
                        break;
                default: printf("输入错误!\n");
                        exit(0);
                }
        }
       
        return 0;
}

[ 本帖最后由 LK.QQ 于 2009-4-14 14:44 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-04-14 14:29 |只看该作者
你这个程序编译都过不去阿
l.date=a有错误

论坛徽章:
0
3 [报告]
发表于 2009-04-14 14:35 |只看该作者
l.date = &a

论坛徽章:
0
4 [报告]
发表于 2009-04-14 14:45 |只看该作者
刚才贴错了,现在才对。

论坛徽章:
0
5 [报告]
发表于 2009-04-14 16:07 |只看该作者
initlist中
第一,l.data = a赋值有错
第二,数组索引没有改变
可以改用 l.data[l.size++] = a

output中也有类似的问题

[ 本帖最后由 qakito 于 2009-4-14 16:08 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-04-14 16:27 |只看该作者
很难想象你是用的c++写出来的程序,我看你把cout改成printf,然后再把文件改成.c算了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP