山东大学 数据结构 实验3 线性表操作

实验三 线性表操作

一、 要求完成时间

实验开始后的第四周之前完成

二、 实验目的

掌握线性表的基本操作:插入、删除、查找。

掌握链表遍历器的使用方法。

三、 实验内容

1、 输入n个不为零的整数作为节点元素值,遇到0代表输入结束(不创建元素值为0的节点),创建有序链表。输出整个链表。

2、 输入一个整数,将该数插入到有序表相应位置。输出整个链表。

3、 输入一个整数,在链表中进行搜索,输出其在链表中的位置。如果不存在输出0。

4、 再一次输入一个整数,在链表中进行搜索,输出其在链表中的位置。如果不存在输出0。

5、 再一次输入n个不为零的整数作为节点元素值,遇到0代表输入结束(不创建元素值为0的节点),创建有序链表。输出整个链表。

6、 使用链表遍历器实现上面两个有序链表的合并,输出合并后的链表。

7、 提示:注意单节点链表的测试。

8、输入输出请严格按下面要求的格式实现

代码:

#include <iostream>

using namespace std;

class OutOfBounds {

public:

    OutOfBounds(){

        cout<<"out of bounds"<<endl;

    }

};



class Nomen{

public:

    Nomen(){

        cout<<"Nomen error"<<endl;

    }

};



//使new引发NoMem异常而不是xalloc异常

//如果要恢复原始行为可以做以下调用

//_set_new_handler(Old_Handler);

int my_new_handler(size_t size){

    throw Nomen();

}





template <class T>



class ChainNode {

public:

    T data;

    ChainNode<T> *link;

    



};



template <class T>

class Chain{

public:

    Chain(){first =0;}//构造函数

    ~Chain();//析构函数,就是删掉链表中的每一个节点

    bool IsEmpty()const {//判断链表是不是没有元素

        return first==0;

    }

    int Length()const;//返回链表的长度

    bool Find(int k,T& x)const;//寻找第k个元素并将其放到x中

    void Erase();//删除链表中的所有节点

    void Output(ostream& out) const;//输出链表

    int Search(const T& x)const;//寻找是否存在x这个值

    Chain<T>& Delete(int k,T& x);//删除节点

    Chain<T>& Insert(int k,const T& x);//插入节点

    Chain<T>& AutoInsert(const T& x);//自动寻找位置并插入节点

    Chain<T>& Append(const T& x);//在链表的最后加上元素

    Chain<T>& Reverse1();//反序1 

    Chain<T>& Reverse2(Chain<T>& A,Chain<T>& B);//反序2

    Chain<T>& Merge(Chain<T>
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值