C++ Primer Plus第六版编程练习10.8解答

List.h

#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED

typedef int Item;

class List
{
private:
    enum {ArSize=10};
    Item list[ArSize];
    int length;          //length表示链表的有效长度
    int ListSize;        //ListSize表示的是链表的空间
public:
    List();
    List(Item ar[],int n);
    void IncreaseItem(Item e);
    void isEmpty() const;
    void isFull() const;
    void visit() const;
    void ListLength() const;
    ~List();
};

#endif // LIST_H_INCLUDED

List.cpp

#include "List.h"
#include <iostream>

//创建没有任何元素的空表
List::List()
{
    length=0;           //空表长度为0
    ListSize=ArSize;    //列表的初始存储空间
    std::cout<<"列表创建成功!\n";
}

//创建存储有多个某种类型元素的列表
List::List(Item ar[],int n)
{
    for(int i=0; i<n; i++)
    {
        list[i]=ar[i];
    }
    length=n;
    ListSize=ArSize;
    std::cout<<"列表创建成功!\n";
}

void List::isEmpty() const
{
    if(length==0)
        std::cout<<"列表为空\n";
    else
        std::cout<<"列表不空\n";
}

void List::isFull() const
{
    if(length==ListSize)
        std::cout<<"列表已满\n";
    else
        std::cout<<"列表未满\n";
}

void List::ListLength() const
{
    std::cout<<"列表的元素个数为"<<length<<"个。\n";
}

void List::IncreaseItem(Item e)
{
    if(length==ListSize)
        std::cout<<"抱歉,列表已满!\n";
    else
        list[length++]=e;
}


void List::visit() const
{
    using std::cout;
    using std::endl;
    if(length==0)
        cout<<"列表为空!\n";
    else
    {
        cout<<"列表的元素为:\n";
        for(int i=0; i<length; i++)
        {
            cout<<list[i]<<"; ";
        }
        cout<<endl;
    }
}

List::~List()
{

}

useList.cpp

#include "List.h"
#include <iostream>

int main(void)
{
    using namespace std;

    cout<<"test #1:创建一个空表\n";
    List Lnull;
    cout<<"查看列表元素\n";
    Lnull.visit();

    cout<<"\ntest #2:创建一个存储有多个元素的列表\n";
    cout<<"请输入列表元素个数:\n";
    int num;
    cin>>num;
    Item array[num];
    cout<<"请输入列表元素:\n";
    for(int i=0; i<num; i++)
        cin>>array[i];
    List L(array,num);
    L.visit();
    cout<<"******************************************\n"
               "*                                                  *\n"
               "*         请输入您需要的操作              *\n"
               "*                                                  *\n"
               "*      1  判断列表是否为空                *\n"
               "*      2  判断列表是否已满                *\n"
               "*      3  计算列表元素个数                *\n"
               "*      4  在列表中插入一个元素          *\n"
               "*      5  查看列表元素                      *\n"
               "*      6  退出                                  *\n"
               "*                                                  *\n"
               "******************************************\n";
    char ch;
    cin>>ch;
    while(ch!='6')
    {
        switch(ch)
        {
        case '1':
            L.isEmpty();
            break;
        case '2':
            L.isFull();
            break;
        case '3':
            L.ListLength();
            break;
        case '4':
            cout<<"请输入要插入的元素:";
            Item elem;
            cin>>elem;
            L.IncreaseItem(elem);
            break;
        case '5':
            L.visit();
            break;
        default:
            cout<<"\a您的输入有误,请输入数字1~6\n";
        }
        cout<<"\n******************************************\n"
            "*                                        *\n"
            "*         请输入您需要的操作             *\n"
            "*                                        *\n"
            "*      1  判断列表是否为空               *\n"
            "*      2  判断列表是否已满               *\n"
            "*      3  计算列表元素个数               *\n"
            "*      4  在列表中插入一个元素           *\n"
            "*      5  查看列表元素                   *\n"
            "*      6  退出                           *\n"
            "*                                        *\n"
            "******************************************\n";
        cin>>ch;
    }
    cout<<"感谢你的使用,再见!\n";

    cin.get();
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值