| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 264 人关注过本帖
标题:关于顺序表的一点小问题,求指教
只看楼主 加入收藏
qq267165295
Rank: 1
等 级:新手上路
帖 子:21
专家分:2
注 册:2012-1-6
收藏
 问题点数:0 回复次数:1 
关于顺序表的一点小问题,求指教
就是一个顺序表实现以下操作:
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:52
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
很多的基本语法错误
1 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
 
这个 LIST_INIT_SIZE  是宏,也就是20,如果你要这样写,改成 变量形式
2 gets(a); 要求是char *类型,你给的是int *

3 Search_Sq(L,28) ,你的这个函数传递引用的,应该是一个变量
比如改成 int n = 28
Search_Sq(L,n);

或者改成 传值

4 使用 cout 没有引用 空间 :using namespace std;

还有些细节自己看了~


我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-11-21 16:41
快速回复:关于顺序表的一点小问题,求指教
数据加载中...
 
   



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

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