千家信息网

C++如何实现数据结构的顺序表

发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,这篇文章给大家分享的是有关C++如何实现数据结构的顺序表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码1.SeqList.h#ifndef SEQLIST_H#defi
千家信息网最后更新 2025年02月09日C++如何实现数据结构的顺序表

这篇文章给大家分享的是有关C++如何实现数据结构的顺序表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

    代码

    1.SeqList.h

    #ifndef SEQLIST_H#define SEQLIST_H#includeusing namespace std;templateclass SeqList{        T data[MAXSIZE];        int length;public:        SeqList();        SeqList(T a[],int n);        ~SeqList();        int ListLength();        T Get(int pos);        int Locate(T item);        void SeqPrint();        void Insert(int i, T item);        T Delete(int i);};#endif

    2.SeqList.cpp

    #define _CRT_SECURE_NO_WARNINGS   1#include"SeqList.h"templateSeqList::SeqList(){        length = 0;}templateSeqList::SeqList(T a[], int n){        if (n < MAXSIZE)        {                length = n;                for (int i = 0; i < n; i++)                {                        data[i] = a[i];                }        }        else        {                cerr << "您的数据已经超过范围,系统无法继续工作" << endl;                exit(-1);        }}templateSeqList::~SeqList(){}templateint SeqList::ListLength(){        return length;}templateT SeqList::Get(int pos){        if (pos > length || pos < 0)        {                cerr << "您要查找的位置不存在,系统无法继续为您服务" << endl;                exit(-1);        }        else        {                return data[pos - 1];        }}templateint SeqList::Locate(T item){        for (int i = 0; i < length; i++)        {                if (data[i] == item)                        return i + 1;        }        return -1;}templatevoid SeqList::SeqPrint(){        for (int i = 0; i < length; i++)        {                cout << data[i] << "  ";        }        cout << endl;}templatevoid SeqList::Insert(int i, T item){        if (length < MAXSIZE)        {                for (int j = length - 1; j>=i - 1; j--)                {                        data[j + 1] = data[j];                }                data[i - 1] = item;                length++;        }        else        {                cerr << "抱歉,当前已经达到系统最大的储存,无法为您插入" << endl;                exit(-1);        }}templateT SeqList::Delete(int i){        if (length == 0)        {                cerr << "当前无可删除元素" << endl;                exit(-1);        }        if (i<1 || i>length)        {                cerr << "该位置非法" << endl;                exit(-1);        }        T x = data[i - 1];        for (int j = i; j < length; j++)        {                data[j - 1] = data[j];        }        length--;        return x;}

    3.test.cpp

    #define _CRT_SECURE_NO_WARNINGS   1#include"SeqList.cpp"#includeusing namespace std;void menu(){        cout << "|------------------------------------|" << endl;        cout << "|----------- 欢迎来到顺序表 ---------|" << endl;        cout << "|---------------1.插入---------------|" << endl;        cout << "|---------------2.删除---------------|" << endl;        cout << "|---------------3.求长---------------|" << endl;        cout << "|---------------4.取值---------------|" << endl;        cout << "|---------------5.定位---------------|" << endl;        cout << "|---------------6.打印---------------|" << endl;        cout << "|---------------0.退出---------------|" << endl;        cout << "|------------------------------------|" << endl;}int main(){        int *a;        int n;        cout << "请输入您要构造的顺序表的长度" << endl;        cin >> n;        a = new int[n];        cout << "请输入该顺序表中的每一个元素" << endl;        for (int i = 0; i < n; i++)        {                cin >> a[i];        }        SeqListseq(a, n);        cout << "现在开始我们的程序之旅" << endl;        int input=0;        do        {                menu();                cout << "输入您要进行的操作的编号" << endl;                cin >> input;                switch (input)                {                case 1:                        cout << "请输入您要插入的位置和数值" << endl;                        int pos;                        int value;                        cin >> pos;                        cin >> value;                        seq.Insert(pos,value);                        break;                case 2:                        cout << "请输入您要删除的位置" << endl;                        int pos1;                        cin >> pos1;                        cout << "您删除的元素的值为:";                        cout << seq.Delete(pos1) << endl;                        break;                case 3:                        cout << "您的顺序表当前的长度为:" << seq.ListLength() << endl;                        break;                case 4:                        cout << "请输入您要查找的位置" << endl;                        int pos2;                        cin >> pos2;                        cout << "您查找的元素的值为:";                        cout << seq.Get(pos2) << endl;;                        break;                case 5:                        cout << "请输入您要查找的元素" << endl;                        int item;                        cin >> item;                        cout << "您查找的元素的位置为:";                        cout << seq.Locate(item) << endl;;                        break;                case 6:                        cout << "当前顺序表如下:" << endl;                        seq.SeqPrint();                        break;                case 0:                        cout << "程序退出,感谢使用" << endl;                        exit(-1);                        break;                default :                        cout << "您的输入有误,请重新选择" << endl;                }        } while (input);        return 0;}

    感谢各位的阅读!关于"C++如何实现数据结构的顺序表"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

    0