栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++实现数据结构链式线性表的基本操作

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++实现数据结构链式线性表的基本操作

#include

using namespace std;

typedef int ElemType;

typedef struct Node{

    ElemType e;

    struct Node * next;

}Node,*linkList;

void initList(linkList &L){

    L = new Node;

    L->next = NULL;

}

//插入

void insertList(linkList &L, ElemType e){

    linkList p = new Node;

    p->e = e;

    p->next = L->next;

    L->next = p;

}

//输出

void outputList(linkList &L){

    linkList p = L->next;

    if (p == NULL)

    {

        cout<<"此链表为空链表"<

    }

    else{

        while (p != NULL)

        {

            cout<e<

            p = p->next;

        }

    }

   

}

//求表长

int getLength(linkList &L){

    int i = 0;

    linkList p = L;

    while (p->next != NULL)

    {

        i++;

        p = p->next;

    }

    return i;

}

//查找值为e的结点

bool hasList(linkList &L, ElemType e){

    linkList p = L->next;

    while (p != NULL)

    {

        if(p->e == e){

            return true;

        }

        p = p->next;

    }

    return false;

}

//查找第i个位置的元素

void searchIndex(linkList &L, int index){

    int length1 = getLength(L);

    if (index<=0 || index>length1)

    {

        cout<<"您输入的索引超过了线性表的长度范围。"<

    }

    else

    {

        linkList p = L;

        int i = 0;

        while (p->next != NULL)

        {

            p = p->next;

            i++;

            if(i == index)

            {

                cout<<"第个"<e<

            }

        }

    }

}

//删除

void deleteElem(linkList &L, ElemType e){

    linkList p = L;

    linkList q = NULL;

    while (p->next != NULL){

        if (p->next->e == e)

        {

            q = p->next;

            p->next = p->next->next;

            break;

        }

        p = p->next;

    }

    if (q != NULL)

    {

        delete q;

        cout<<"元素"<

    }

    else

    {

        cout<<"元素"<

    }

}

//删除第i个元素

void deleteIndex(linkList &L, int i){

    int length2 = getLength(L);

    if (i<=0 || i>length2)

    {

        cout<<"您输入的索引超过了线性表的长度范围。"<

    }

    else

    {

         linkList p = L;

        linkList q = NULL;

        int num = 0;

        while (p->next != NULL)

        {

            num++;

            if(num == i){

                q = p->next;

                p->next = p->next->next;

                break;

            }

            p = p->next;

        }

        if (q !=NULL)

        {

            delete q;

            cout<<"删除成功。"<

        }

    }

}

//在指定位置插入元素

void insertElement(linkList &L,int i,ElemType e){

    int length3 = getLength(L);

    if (i<=0 || i>length3)

    {

        cout<<"您想要插入的位置超过了线性表的长度范围。"<

    }

    else

    {

        linkList p = L;

        linkList q = new Node;

        int num1 = 0;

        while (p->next != NULL)

        {

            num1++;

            if(num1 == i){

                q->next = p->next;

                p->next = q;

                q->e = e;

                break;

            }

            p = p->next;

        }

    }

}

int main()

{

    linkList L = NULL;

    initList(L);

    while (1)

    {

        cout<<"-----线性表操作-----"<

        cout<<"选择1:插入元素。"<

        cout<<"选择2:打印出线性表"<

        cout<<"选择3:返回线性表的长度"<

        cout<<"选择4:根据索引查找元素"<

        cout<<"选择5:判断线性表中是否包含指定元素"<

        cout<<"选择6:根据元素名称删除该元素"<

        cout<<"选择7:根据索引删除元素"<

        cout<<"选择8:在指定位置前插入元素"<

        cout<<"选择9:退出线性表"<

        cout<<"请输入您的选择"<

        int i;

        cin>>i;

        switch (i)

        {

        case 1:

            cout<<"请输入您要插入的元素的个数:"<

            int num;

            cin>>num;

            for (int i = 0; i < num; i++)

            {

                ElemType element1;

                cin>>element1;

                insertList(L,element1);

            }

            break;

        case 2:

            cout<<"此线性表的元素如下:"<

            outputList(L);

            break;

        case 3:

            int length;

            length = getLength(L);

            cout<<"此线性表的表长为"<

            break;

        case 4:

            cout<<"请输入您要查找的的位置:"<

            int index1;

            cin>>index1;

            searchIndex(L,index1);

            break;

        case 5:

            cout<<"请输入您要核对的元素:"<

            ElemType element2;

            cin>>element2;

            bool state;

            state = hasList(L,element2);

            if(state){

                cout<<"元素"<

            } else{

                cout<<"元素"<

            }

            break;

        case 6:

            cout<<"请输入您要删除的元素"<

            ElemType element3;

            cin>>element3;

            deleteElem(L,element3);

            break;

        case 7:

            cout<<"请输入您要删除元素的位置:"<

            int index2;

            cin>>index2;

            deleteIndex(L,index2);

            break;

        case 8:

            cout<<"请输入您要插入的位置:"<

            int address;

            cin>>address;

            cout<<"请输入您想要插入的元素:"<

            ElemType e;

            cin>>e;

            insertElement(L,address,e);

            break;

        case 9:

            goto TiaoChu;

        }

    }

    TiaoChu : return 0;

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/511618.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号