| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 380 人关注过本帖, 1 人收藏
标题:求大神指导,查错。
只看楼主 加入收藏
qq267165295
Rank: 1
等 级:新手上路
帖 子:21
专家分:2
注 册:2012-1-6
收藏(1)
 问题点数:0 回复次数:4 
求大神指导,查错。
就是一个顺序表实现以下操作:
1.    建立线性表L={12,13,21,24,28,31,42,77};
2.    在第5个元素之前插入26;
3.    删除第5个元素28;
4.    查找28。

代码如下

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

#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 20

char re_choose[]={"\n选择非法,请输入正确的编号...\n"};

struct SqList
{
    int *elem;//存储空间基址
    int length;//当前长度
    int listsize;//当前分配的存储空间容量(以sizeof(ElemType)为单位)
};
SqList L;

void InitList_sq(SqList &L,int &LIST_INIT_SIZE )//构造一个空的线性表
{
    L.listsize=LIST_INIT_SIZE;
    L.elem=new int[L.listsize];
    L.length=0;//空表长度为0
    //初始存储容量
}//InitList_sq




void Output_Sq(SqList &L)
{//逐个输出线性表中的数据元素
    for(int i=0;i<L.length;i++)
        cout<<L.elem[i]<<endl;


}

int Search_Sq(SqList &L,int &x)
{//查找元素X 如果找到返回X所在位置下标,否则返回-1
    for (int i=0;i<L.length;i++)
        if (L.elem[i]==x)
            return i;
        return -1;
}


bool Insert_Sq(SqList &L,int k,int &x)
{
    if (k<0 || k >L.length|| L.length==L.listsize)
        return false;
    for (int i=k-1;i<=L.length;i++)
        L.elem[i+1]=L.elem[i];
    L.elem[k-1]=x;
    L.length++;
    return true;
}

bool ListDelete_Sq(SqList &L,int k)
{
    if (k<1 ||k>L.length)        return false;
    {
        for (int i=k;i<L.length;i++)
            L.elem[i-1]=L.elem[i];
        L.length--;
        return true;
    }

}


void main_switch(char j)
  //操作选择函数
{

   
    switch(j)
    {
            
            case '1' ://显示链表中的数据元素
                system("cls");
                Output_Sq(L);
                system("pause");        
                system("cls");
                break;

            case '2' ://插入数据元素
                system("cls");
                printf("\n\n\n\n\n\n\n\n\n");
                printf("\t\t\t");
               
                Insert_Sq(L,5,26);
                Output_Sq(L);

                system("pause");        
                system("cls");
                break;               
               
            case '3'://删除数据元素
                system("cls");
               
                printf("\n\n\n\n\n\n\n\n\n");
                printf("\t\t\t");
                    
                ListDelete_Sq(L,5);
                Output_Sq(L);
                system("pause");
                system("cls");
                break;

            case '4'://查找数据元素
                system("cls");
               
                printf("\n\n\n\n\n\n\n\n\n");
                printf("\t\t\t");

                Search_Sq(L,28);

                system("pause");
                system("cls");
                break;

            case '0':
                exit(0);
                break;
            default  :
                cout <<re_choose<<endl;
                system("pause");
                system("cls");
                break;
        
            }//end switch
}

void Menu()    //菜单函数
{
    //    cout <<"\n\n\t\t"<<"=============线性表的顺序存储=============="<<endl;
    cout <<"\n\t\t"<<"请选择以下一个功能:"<<endl;
    cout <<"\n\t\t"<<"1.显示线性表中的数据元素."<<endl;
    cout <<"\t\t2.在第5个元素之前插入26." << endl;
    cout <<"\t\t3.删除第5个元素28." << endl;
    cout <<"\t\t4.查找28."<<endl;
    cout <<"\t\t0.退出.\n"<<endl;
    cout <<"\t\t===============================\n"<<endl;
}

   

int main()
{
    char j;

    char a[100];

    int i;
   

    int a[100]={12,13,21,24,28,31,42,77};

    for(i=0;i<7;i++)
    {
        L.elem[i]=a[i];        
    }   
   
    system("cls");
    system("pause");
    system("cls");
    int listsize=LIST_INIT_SIZE;

   
    InitList_sq(L,LIST_INIT_SIZE);//构造空表



    while(1)
    {
        system("cls");
        Menu();   
        printf("\n\t请输入功能编号:");
        gets(a);
        
        if(a[1]!='\0')
        {
            cout <<"\n"<<re_choose<<endl;
            system("pause");
            system("cls");
            continue;
        }
        else
        {
            if(a[0]=='0')
                break;   
            main_switch(a[0]);                    
        }
    }
    return 0;
}

编译出现以下错误。
c:\documents and settings\administrator\桌面\线性表基本操作\顺序表\1.cpp(18) : error C2143: syntax error : missing ')' before 'constant'
c:\documents and settings\administrator\桌面\线性表基本操作\顺序表\1.cpp(18) : error C2143: syntax error : missing ';' before 'constant'
c:\documents and settings\administrator\桌面\线性表基本操作\顺序表\1.cpp(18) : fatal error C1004: unexpected end of file found

搜索更多相关主题的帖子: 存储 include 线性表 
2012-11-21 12:49
fu2751653
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:38
专家分:100
注 册:2011-4-11
收藏
得分:0 
程序问题好像蛮多的,“void InitList_sq(SqList &L,int &LIST_INIT_SIZE )//构造一个空的线性表”这一行里面的形参LIST_INIT_SIZE 不是在前面已经定义为一个20的常数了吗,怎么还能赋予int型呢,还有后面看了下有cout输出函数,但前面头文件你也没加c++的头文件啊
2012-11-21 13:23
qq267165295
Rank: 1
等 级:新手上路
帖 子:21
专家分:2
注 册:2012-1-6
收藏
得分:0 
回复 2楼 fu2751653
编译就是卡在这出的问题,根本不是问题很多,加个什么头文件?
2012-11-21 13:52
qq267165295
Rank: 1
等 级:新手上路
帖 子:21
专家分:2
注 册:2012-1-6
收藏
得分:0 
回复 2楼 fu2751653
那你觉得构造一个空的顺序表 应该怎么把listsize 最大值赋值进去?本来定义的就是一个常数
2012-11-21 14:01
fu2751653
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:38
专家分:100
注 册:2011-4-11
收藏
得分:0 
把那个函数形参int &LIST_INIT_SIZE 删除了,要加个#include<iostream.h>C++的头文件吧,不过你程序还有其余问题,像那个SqList &L里面的&不知道你表示的地址 还是引用,如果是引用的作用,这个我就不清楚
2012-11-21 16:12
快速回复:求大神指导,查错。
数据加载中...
 
   



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

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