标题:有关顺序表的简单算法
只看楼主
appleflower
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-12-9
 问题点数:0 回复次数:3 
有关顺序表的简单算法
#include<iostream.h>
#include<stdlib.h>
#define elemtype int

const int maxsize=9;
struct seqlist
{
    elemtype a[9];
    int len;
};

seqlist insert_seqlist (seqlist L,elemtype x,int i)//插入函数
{
    int j;
    if (L.len>=maxsize-1)
        cout<<"表满,无插入"<<endl;
    else if((i<1) || (i>L.len+1))
        cout<<"位置错误"<<endl;
        else
        {
            for (j=L.len;j>=i;j--)
                L.a[j+1]=L.a[j];//元素后移
                L.a[i]=x;//插入元素
                L.len++;//表长度加1
        }
    return L;
}

seqlist delete_seqlist(seqlist L,int i)//删除函数
{
    int j;
    if ((i<1)||(i>=L.len))
        cout<<"位置错误"<<endl;
    else{
        for (j=i+1;j<=L.len;j++)
            L.a[j-1]=L.a[j];//元素前移
            L.len--;//表长度减1
        }
    return L;
}

void print_seqlist (seqlist L)//输出函数
{
    int j;
    cout<<"此时的顺序表中的元素如下:"<<endl;
    for (j=1;j<=L.len;j++)
        cout<<L.a[j]<<" ";
    cout<<endl;
}

void menu()
{
    cout<<"    \n\n\t\t\t顺  序  表\n\n\n\t\t\t0 退   出  \n\n\t\t\t1 插   入\n\n\t\t\t2 删   除\n\n\t\t\t3 显   示 \n\n";
    cout <<"请输入要进行的操作(0-->3):";

}

void main ()//主函数
{
    seqlist L;
    elemtype x;
    int n;
    cout<<"请输入表中元素个数:";
    cin>>n;
    for (int j=1;j<=n;j++)
        {
            cout<<"请输入第"<<j<<"数"<<endl;
            cin>>L.a[j];
        }//建立顺序表

    L.len=n;
    print_seqlist(L);//调用输出函数,输出表中元素

    menu();

    while (1)
    {
        int d;
        cin>>d;
        switch(d)
        {
            case 0:    exit(0);menu();break;
            case 1:
                {    cout<<"请输入要插入的元素及位置:";
                    cin>>x>>j;
                    L=insert_seqlist (L,x,j);
                    print_seqlist(L);//输出插入后的表中元素
                    menu();break;
                }
            case 2:
                {
                    cout<<"请输入要删除的元素位置:";
                    cin>>j;
                    L=delete_seqlist(L,j);//调用删除函数
                    print_seqlist(L);//输出删除后的表中元素
                    menu();break;
                }
            case 3:    print_seqlist(L);menu();break;
            default:
                menu();
                cout<<"输入无效≌请重新输入(0======== 3)"<<endl;
                break;
        }
    }
    cout<<endl;                  
}
搜索更多相关主题的帖子: 算法 int seqlist 顺序 len 
2007-12-09 11:08
oldwolf
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-6-28
得分:0 
为什么大家都不用类 而用结构体呢?
2008-03-19 14:23
jasjac
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2008-3-24
得分:0 
好象删除不对
好象删除不对,比如1 2 3 4 5 6 7 8 9 0十个数,删第五个,结果是只有1 2 3 4了
2008-03-26 10:08
jasjac
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2008-3-24
得分:0 
你有一个小小的错误!
seqlist delete_seqlist(seqlist L,int i)//删除函数
{
    int j;
    if ((i<1)||(i>=L.len))
        cout<<"位置错误"<<endl;
    else{
        for (j=i+1;j<=L.len;j++)
            L.a[j-1]=L.a[j];//元素前移
            L.len--;//表长度减1
        }
    return L;
}
  for (j=i+1;j<=L.len;j++)应该是  for (j=i+1;j<L.len;j++)
这个就不说明了,相信大家都能看明白
2008-03-26 10:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-191316-1-1.html




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

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