数据结构-线性表

线性表

线性表的顺序表示和实现

  • 线性表的顺序储存结构

    截屏2020-09-19 上午10.31.04

  • 线性表的数据结构定义

    截屏2020-09-19 上午10.31.41

  • 线性表的插入

    截屏2020-09-19 上午10.32.52

  • 线性表的删除

    截屏2020-09-19 上午10.33.44

    截屏2020-09-19 上午10.33.15

  • 线性表的归并

    截屏2020-09-19 上午10.35.34

  • 优缺点

    截屏2020-09-19 下午4.04.03

线性表的链式表示和实现

  • 线性链表的逻辑状态

    截屏2020-09-19 上午10.36.29

  • 线性链表的数据结构定义

    截屏2020-09-19 上午10.36.58

  • 取链表中第i个元素

    截屏2020-09-19 上午10.38.08

  • 链表的插入

    截屏2020-09-19 上午10.38.59

  • 链表的删除

    截屏2020-09-19 上午10.39.32

  • 链表的逆序插入

    截屏2020-09-19 上午10.42.16

  • 链表归并

    截屏2020-09-19 上午10.43.31

  • 链表多项式合并

    截屏2020-09-19 下午3.59.47

  • 优缺点

    截屏2020-09-19 下午4.17.28

  • 简单链表类的实现

    #include <iostream>
    using namespace std;
    
    class List_Node
    {
        public:
            List_Node *next;
            int value;
    };
    
    class List_
    {
        public:
            List_Node *begin;
            List_()
            {
                begin = new List_Node();
                begin->next = NULL;
            }
    
            // begin->next, i = 0
            bool link_list_insert_node(int i, int value)
            {
                List_Node *node = this->begin;
                List_Node *insert_node = new List_Node();
                List_Node *tmp = new List_Node();
                while(node && i--)
                {
                    node = node->next;
                }
                if(!node && i > 0)
                    return false;
                
                tmp = node->next;
                node->next = insert_node;
                insert_node->next = tmp;
                insert_node->value = value;
                return true;
            }
    
            // begin->next, i = 1
            bool link_list_delect_node(int i)
            {
                List_Node *node = this->begin;
                while(node && i--)
                {
                    node = node->next;
                }
                if(!node && i > 0)
                    return false;
                node->next = node->next->next;
                return true;
            }
    
            int link_list_get_length()
            {
                List_Node *node = this->begin->next;
                int cnt = 0;
                while(node)
                {
                    cnt++;
                    node = node->next;
                }
                return cnt;
            }
    
            void link_list_print()
            {
                List_Node *node = this->begin;
                while(node)
                {
                    if(node != this->begin)
                        cout << node->value << " ";
                    node = node->next;                
                }
                cout << endl;
                return ;
            }
    
            int link_list_get_index_value(int i)
            {
                List_Node *node = begin->next;
                while(node && i--)
                {
                    node = node->next;
                }
                if(!node && i > 0)
                    return -1;
                return node->value;
            }
    };
    
    int main()
    {
        // List_Node *n = new List_Node();
        List_ l = List_();
        l.link_list_print();
        int n;
        cin >> n;
        for(int i = 0; i < n; i++)
        {
            int tmp;
            cin >> tmp;
            l.link_list_insert_node(i, tmp);
        }
        cout << "link list print: " << endl;
        l.link_list_print();
        cout << "link list lenght: " << l.link_list_get_length() << endl;
        l.link_list_delect_node(2);
        cout << "link list print: " << endl;
        l.link_list_print();
        return 0;
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值