| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 441 人关注过本帖
标题:为什么debug之后总说我少写了“;”呢??
只看楼主 加入收藏
Cile
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-10-16
结帖率:0
收藏
已结贴  问题点数:10 回复次数:2 
为什么debug之后总说我少写了“;”呢??
问题出现在主函数里~~~


/*2.25 假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合
(即同一表中的元素值各不相同),现要求另辟空间构成一个线性表C,
其元素为A和B中元素的交集,且表C中的元素也依值递增有序排列。
试对顺序表编写求C的算法。 */

#include <stdlib.h>
#include <stdio.h>
#include <iostream.h>

#define LIST_INIT_SIZE 100  //线性表存储空间的初始分配量
#define LISTINCREMENT 10   //线性表存储空间的分配量

#define Na 10;  //线性表A存储元素个数
#define Nb 5;  //线性表B存储元素个数

typedef int ElemType;

typedef struct
{
    ElemType *elem;  //存储空间基址
    int length;  //当前长度
    int listsize;  //当前分配的存储容量
}SqList;

void InitList_Sq(SqList &L)   //构造顺序线性表
{
    L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
    if(!L.elem)
        exit(0);
    L.length=0;
    L.listsize=LIST_INIT_SIZE;
}

void ListInsert_Sq(SqList &L,int i,ElemType e)
//在顺序线性表L中第i个位置之前插入新的元素e
//i的合法值为1<=i<=ListLength_Sq(L)+1
{
    int *newbase;
    if(i<1||i>L.length) //i值不合法
        exit(0);
    if(L.length==L.listsize)  //当前存储空间已满,增加分配
    {
        newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
        if(!newbase)
            exit(-2);   //存储分配失败
        L.elem=newbase;    //新基址
        L.listsize+=LISTINCREMENT;   //增加存储容量
    }
    ElemType *q,*p;
    q=&L.elem[i-1];
    for(*p=L.elem[L.length-1];p>=q;--p)
        *(p+1)=*p;   //插入位置之后的元素右移
    *q=e;   //插入e
    ++L.length;   //表长+1
}

void ListCreat_Sq(SqList &L,int n)
//逆序输入n个元素的值,建立顺序型线性表L
{
    L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
    L.length=L.length+sizeof(ElemType)*n;
    int i;
    for(i=0;i<=n;i++)
    {
        ElemType e;
        printf("请逆序输入要插入值:\n");
        scanf("%d",&e);
        L.elem[i]=e;
    }
}

void visit(ElemType c)   //输出元素C
{
    printf("%d\t",c);
}

void ListTraverse_Sq(SqList L)
//线性表L已存在,依次对L的每个数据元素调用函数visit(),一旦visit()失败,则操作失败
{
    int i;
    for(i=0;i<L.length;i++)
        visit(L.elem[i]);
    printf("\n");
}

void Similar_Sq(SqList La,SqList Lb,SqList &Lc)  //求交集
{
    int i,j,k;
    i=0;
    j=0;
    k=0;
    ElemType e;
    if(La.length>=Lb.length)
        Lc.length=La.length;
    else
        Lc.length=Lb.length;
    while(i<La.length&&j<Lb.length)
    {
        if(La.elem[i]==Lb.elem[j])
        {
            e=La.elem[i];
            Lc.elem[k]=e;
            k++;
            i++;
            j++;
        }
        if(La.elem[i]<Lb.elem[j])
        {
            i++;
            continue;
        }
        if(La.elem[i]>Lb.elem[j])
        {
            j++;
            continue;
        }
    }
}

void main()
{
    SqList La,Lb,Lc;
    InitList_Sq(La);
    InitList_Sq(Lb);
    InitList_Sq(Lc);
    printf("线性表A:\n");
    ListCreat_Sq(La,Na);  //创建线性表
    printf("线性表B:\n");
    ListCreat_Sq(Lb,Nb);
    Similar_Sq(La,Lb,Lc);  //求交集
    printf("Lc为:\n");
    ListTraverse_Sq(Lc);
}
搜索更多相关主题的帖子: include 元素 存储 线性表 
2012-10-21 20:26
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:5 
debug  语法错误
2012-10-22 08:55
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:5 
#define Na 10;  //线性表A存储元素个数
#define Nb 5;  //线性表B存储元素个数

你在宏定义时加了;
所以编译器在展开式就把分号也带进去啦
相当于
ListCreat_Sq(La,10;);
所以肯定有 miss “)” before “;”
2012-10-28 10:53
快速回复:为什么debug之后总说我少写了“;”呢??
数据加载中...
 
   



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

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