标题:用类实现线性表完整程序
只看楼主
Q雨停江南
Rank: 1
来 自:山西阳泉
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-10-7
结帖率:0
 问题点数:0 回复次数:3 
用类实现线性表完整程序
#include<iostream.h>
#include<malloc.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTNCREMENT 10
class Sqlist
{
public:
    void InitSList();
    void InsertSList();
    void DeleteSList();
    void FindList();
protected:
    int *elem;
    int length;
    int listsize;
};
/**************************创建线性表*******************/
void Sqlist::InitSList()
{
    int i;
    elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));
    if(!elem)exit(0);
    length=0;
    listsize=LIST_INIT_SIZE;
    cout<<"请输入表长:"<<endl;
    cin>>length;
    cout<<"表中的元素是:"<<endl;
    for(i=0;i<length;i++)
        cin>>elem[i];
}
/*************************删除元素************************/
void Sqlist::DeleteSList()
{
    int *p,*q,i;
    if((i<1)||(i>length))
        cout<<"ERROR"<<endl;
    p=&(elem[i-1]);
    q=elem+length-1;
    for(++p;p<=q;++p)
        *(p-1)=*p;
    --length;
cout<<"新的顺序表中的元素是:"<<endl;
             for(i=0;i<length-1;i++)
                 cout<<elem[i]<<endl;
}
/*************************插入元素**********************/
void Sqlist::InsertSList()
{
    int*newbase,i,e;
    int *q,*p;
    cout<<"请输入插入元素的位置i:"<<endl;
    cin>>i;
    cout<<"请输入插入的新元素e:"<<endl;
    cin>>e;
    if(i<1||i>length+1)
        cout<<"error"<<endl;
    if(length>=listsize)
    {
        newbase=(int*)realloc(elem,(listsize+LISTNCREMENT)*sizeof(int));
        if(!newbase)exit(0);
        elem=newbase;
        listsize+=LISTNCREMENT;
    }
    q=&(elem[i-1]);
    for(p=&(elem[length-1]);p>=q;--p)
        *(p+1)=*p;
    *q=e;
    ++length;
cout<<"新的顺序表中的元素是:"<<endl;
            for(i=0;i<length+1;i++)
                cout<<elem[i]<<endl;
}
/********************查找元素**************************/
void Sqlist::FindList()
{
    int *p,e,i;
    cout<<"请输入查找元素的位置:"<<endl;
    cin>>i;
    p=&(elem[i-1]);
    e=*p;
    cout<<"请输出该位置的元素:"<<endl;
    cout<<e<<endl;
}
/***************************主函数**********************/
main()
{
    int i,m,e;
    Sqlist L;
    L.InitSList();
    cout<<"请选择:"<<endl;
    cout<<"1:插入元素:"<<endl;
    cout<<"2:删除元素:"<<endl;
    cout<<"3:查找元素:"<<endl;
    cin>>m;
    switch(m)
    {
    case 1:
            L.InsertSList();
            break;
    case 2:
            cout<<"请输入删除元素的位置:"<<endl;
            cin>>i;
             L.DeleteSList();
            break;
    case 3:
        L.FindList();
        break;
    default:
        cout<<"ERROR"<<endl;
    }
}







搜索更多相关主题的帖子: 线性表 public include void 
2012-10-23 11:29
JYIT
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:30
专家分:101
注 册:2012-10-17
得分:0 
还没仔细研究其正确性,不过感谢楼主的热情!
2012-10-23 18:03
Q雨停江南
Rank: 1
来 自:山西阳泉
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-10-7
得分:0 
回复 楼主 Q雨停江南
呵呵,完全可以运行出来的呦

走好自己的每一步!
2012-10-24 10:07
zhuanjia0
Rank: 4
等 级:业余侠客
威 望:3
帖 子:86
专家分:232
注 册:2012-1-13
得分:0 
上学期也有做过这道题,不过是用纯数组,可能比较不方便。
楼主也可以试试用动态链表,没有输入个数限制。
2012-10-25 14:42



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




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

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