| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1910 人关注过本帖
标题:帮忙看一下以下的代码,我找不到哪里错了?
只看楼主 加入收藏
林小阮
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-22
结帖率:33.33%
收藏
已结贴  问题点数:10 回复次数:6 
帮忙看一下以下的代码,我找不到哪里错了?
#include<iostream.h>
#include<stdlib.h>
const list_init_size=100;
const listincrement=10;
typedef  int  elemtype;
typedef  struct  //顺序表的空间分配
{
    elemtype * elem;//一维数组
    int length;
    int listsize;
    int incrementsize;
}sqlist;
void  initlist_sq(sqlist &l)//生成顺序表的空间
{
     l.elem=new elemtype[list_init_size];//生成动态数组
     l.length=0;
     l.listsize=list_init_size;
     l.incrementsize=listincrement;
}
void  inversion(sqlist &l)
{
     int i=0;
     elemtype e,*p,*q;
     for(i=0;i<l.length;i++)
     {
          p=&(l.elem[l.length-1]);//每次删除最后一个元素
          e=*p;//把最后一个元素赋值给e
          q=&(l.elem[i+1]);//插入位置
          for(p;p>=q;--p)
          {
                *(p+1)=*p;
           }
           *q=e;//插入e
}
int main()
{
      sqlist l;
      initlist_sq(l);
      l.elem[]={1,2,3,4,5,6};
      inversion(l);
      return 0;
}
报错点:C:\Users\zxq\Desktop\20151152091\2-6.cpp(6) : error C2601: 'main' : local function definitions are illegal
C:\Users\zxq\Desktop\20151152091\2-6.cpp(15) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.
搜索更多相关主题的帖子: include 动态 空间 
2016-09-24 23:02
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:3 
typedef  struct后面少个结构名。
void  initlist_sq(sqlist &l)//生成顺序表的空间
这里l前面多了个取地址符。
2016-09-25 16:53
林小阮
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-22
收藏
得分:0 
回复 2楼 ehszt
还是不对,地址符前面有类型,是引用型参数
2016-09-25 17:28
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:1 
关于引用的问题是我错了。
我觉得有几处问题。#include<iostream.h> //这个是什么?c++中应该是iostream吧,
 #include<stdlib.h>
 const list_init_size=100;  //这个并不是任何一种类型
 const listincrement=10;    //这个一样
2016-09-25 17:44
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:1 
我还没看懂你的代码  到底做了个什么链表。。。

不过。从到到尾l.lenth都是等于0.你在初始化数组的时候并没有顺手给l.lenth赋值。导致程序很多地方都没能执行。。

φ(゜▽゜*)♪
2016-09-27 13:55
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:5 
两个问题:
  1.这段代码实现的功能我觉得很可疑。为什么不是把整个数组对称交换呢?单单撇掉elem[0]算怎么回事?
  2.何必用new呢,索性就在结构体里声明数组 elemtype elem[list_init_size];不就好了? 声明指针再new一个常数大小的数组,再赋值,,
程序代码:
#include<iostream>
#include<stdlib.h>
const int list_init_size=100;//少了int ,const 必须跟一个类型名、变量名、才能定义一个 常量 ,这个语法错误导致文件无法编译。

const int listincrement=10; //这句话约等于 #define listincrement 10 吧。不过两者机制不同

typedef  int  elemtype;
typedef  struct { //顺序表的空间分配
    elemtype * elem;//一维数组
    int length;
    int listsize;
    int incrementsize;
} sqlist;
void  initlist_sq(sqlist &l) { //生成顺序表的空间
    l.elem=new elemtype[list_init_size];//生成动态数组,_new一个常数大小的数组,何必呢? _
    l.length=0;
    l.listsize=list_init_size;
    l.incrementsize=listincrement;
}
void  inversion(sqlist &l) {//_这个函数实现了把从elem[1]到elem[lenth-1]做对称交换。不过我没搞懂为什么不是整个数组做对称交换呢? _
    int i=0;
    elemtype e,*p,*q;
    for(i=0; i<l.length; i++) {
        p=&(l.elem[l.length-1]);//每次删除最后一个元素
        e=*p;//把最后一个元素赋值给e
        q=&(l.elem[i+1]);//插入位置,_..i+1..为什么是i+1呢? _
        for(p; p>=q; --p) {
            *(p+1)=*p;
        }
        *q=e;//插入e
    }
}
int main() {
    sqlist l;
    initlist_sq(l);
    l.length=6;//_这是导致你的代码很多地方没起作用的根本原因。 _你原先的代码可能只需要修改这部分就能正常运行了

//    l.elem[]= {1,2,3,4,5,6};//这,算列表初始化?这里我的编译器报error。所以我索性改成我自己看得懂的方法来用/*
    for(size_t i=0;i<6;i++)
    l.elem[i]=i+1;   

//    */
    inversion(l);
//  /*  做个测试输出一下看看程序运行得怎么样吧
    for(size_t i=0;i<l.length;i++){
        printf(" %d",l.elem[i]);
    }   

//  */     是不是你想要的呢? 

    return 0;
}









φ(゜▽゜*)♪
2016-09-27 14:18
林小阮
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-22
收藏
得分:0 
非常感谢
收到的鲜花
  • 书生牛犊2016-09-29 17:28 送鲜花  10朵   附言:很有礼貌。要宣扬正能量
2016-09-28 14:55
快速回复:帮忙看一下以下的代码,我找不到哪里错了?
数据加载中...
 
   



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

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