The Fourth Dimension Space

枯叶北风寒,忽然年以残,念往昔,语默心酸。二十光阴无一物,韶光贱,寐难安; 不畏形影单,道途阻且慢,哪曲折,如渡飞湍。斩浪劈波酬壮志,同把酒,共言欢! -如梦令

线性表类——张宏数据结构第一课

晚上花了2个多小时写的,感觉不是很难,下次尝试下写成链表+模板的形式 O(∩_∩)O~

#include<iostream>
#include
<algorithm>
using namespace std;

#define LISTVOLUME 10000


class sqlist
{
private:
    
int a[10001];
    
int lenth;
    
int max;
public:
    sqlist()
    {
        memset(a,
0,sizeof(a));
        lenth
=0;
        max
=LISTVOLUME;


    }
    
void initial();
    
void creat();
    
void print();
    
void inset(int num,int pos);
    
void deletenode(int pos);
    
void sortlist();
    
int size();
    
bool empty();
    
bool full();
    
void findnode(int num);


};


void sqlist::initial()
{
    memset(a,
0,sizeof(a));
    lenth
=0;
    max
=LISTVOLUME;
}
void sqlist::creat()
{

    cout
<<"请顺序键入链表中的数值,用空格隔开,并以'-1'结束"<<endl;
    
int pos=1;
    
int temp;
    
while(cin>>temp)
    {
            
if(temp==-1)
            
break;
        
if(lenth>=LISTVOLUME)
        {

            cout
<<"抱歉,线性表已满,无法输入数据,请重新初始化该数据表"<<endl;
            cout
<<"请问需要重新初始化吗?(Y/N)"<<endl;
            
char temp;
            cin
>>temp;
            
if(temp=='Y'||temp=='y')
            {

                initial();
                creat();
                
break;
            }
            
else
                
break;
        }

    
        a[pos]
=temp;
        pos
++;
        lenth
++;

        

    }

}

void sqlist::print()
{

    
int i;
    
for(i=1;i<=lenth;i++)
    {

        cout
<<a[i]<<' ';

    }
    cout
<<endl;

}

void sqlist::inset(int num, int pos)
{

    
if(lenth>=LISTVOLUME)
    {

        cout
<<"数据表已满,无法添加数据"<<endl;
        
return;
    }
    
if(pos<1||pos>lenth+1)
    {

        cout
<<"您输入的位置不合法,请重新输入(仅需要输入插入的位置):";
        cin
>>pos;
    }
    
int i;
    
for(i=lenth;i>=pos;i--)
    {
        a[i
+1]=a[i];
    }
    a[pos]
=num;
    lenth
++;

}

void sqlist::deletenode(int pos)
{
    
if(pos<1||pos>lenth)
    {

        cout
<<"您输入的位置不合法,请重新输入";
        cin
>>pos;
    }
    
int i;
    
for(i=pos+1;i<=lenth;i++)
    {

        a[i
-1]=a[i];

    }
    a[lenth]
=0;
    lenth
--;
    cout
<<"成功删除"<<pos<<"号结点"<<endl;
}

void sqlist::sortlist()
{

    
int temp;
    cout
<<"请问您需要从小到大排列(键入1)还是从大到小排列(键入-1)"<<endl;
    cin
>>temp;
    
if(temp==1)
        sort(a
+1,a+1+lenth);
    
else if(temp==-1)
    {

        sort(a
+1,a+1+lenth);
        reverse(a
+1,a+1+lenth);

    }
    cout
<<"排序完成"<<endl;
}
int sqlist::size()
{
    
return lenth;
}

bool sqlist::empty()
{

    
if(lenth==0)
        
return true;
    
else
        
return false;
}

bool sqlist::full()
{

    
if(lenth>=max)
        
return true;
    
else
        
return false;

}

void sqlist::findnode (int num)
{

    
int i;
    
for(i=1;i<=lenth;i++)
    {

        
if(a[i]==num)
        {
            cout
<<"该元素位于"<<i<<"号位置"<<endl;
            
return ;
        }


    }
    cout
<<"没有搜索到改元素,请重新查找"<<endl;
}





int main ()
{
    sqlist test;
    
int m,n;
    cin
>>m>>n;
    test.creat();
    test.print();
    test.initial();
    test.creat();
    test.print();
    test.inset(m,n);
    test.sortlist ();
    test.deletenode(
3);
    test.findnode(
3);
    
return 0;

}



posted on 2009-02-19 00:51 abilitytao 阅读(946) 评论(3)  编辑 收藏 引用

评论

# re: 线性表类——张宏数据结构第一课 2009-02-19 09:13 xxxxx

只是一个静态数组嘛,而且还有错 LISTVOLUME 已经越界了  回复  更多评论   

# re: 线性表类——张宏数据结构第一课 2009-02-19 11:40 abilitytao

才上了一节数据结构啊 还希望大牛您多多指点啊
至于那个宏是后面定义的 开始调的时候值比较小 之后忘记把数组改大一点了
o(╯□╰)o...
  回复  更多评论   

# re: 线性表类——张宏数据结构第一课 2009-02-19 11:44 罗伟涛

@xxxxx
另外可不可以请教一下 这个类还能怎样改进呢?
  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理