weixin_57035750 2021-07-03 02:37 采纳率: 100%
浏览 20
已采纳

在管理系统中,插入函数怎么写?

要用malloc函数和单链表insert,还有要怎么证明这个插入函数在整个管理系统中是正确的?求大佬解答!拜托啦!!!

  • 写回答

2条回答 默认 最新

  • 一颗小码农 2021-07-03 03:30
    关注

    插入函数

    void Insert()
        {
            cout << "输入要插入的序号为" << endl;
            node* p = new node;
            cin >> p->data;
            p->next = NULL;
            cout << "输入在哪个序号前插入" << endl;
            int t;
            cin >> t;
            node* q = head->next, * o = head;//o记录q的前一个结点
            while(q)
            {
                if(q->data!=t)
                {
                    o = o->next;
                    q = q->next;
                }
                else
                {
                    p->next = q;
                    o->next = p;
                    break;
                }
            }
            if(q==NULL)cout << "序号输入有误" << endl;
            else
            {
                cout << "插入后结果如下" << endl;
                for (node* p = head->next; p; p = p->next)
                    cout << p->data<<'\t';
                cout << endl;
            }
        }
    

    完整验证代码

    #include<iostream>
    using namespace std;
    typedef struct node
    {
        int data;
        node* next;
    };
    class List
    {
    private:
        node* head, * last;
    public:
        List()//初始化
        {
            head = new node;
            head->next = NULL;
            last = head;
        }
        void CreateList()//链表创建
        {
            cout << "节点数" << endl;
            int n;
            cin >> n;
            cout << "输入结点序号" << endl;
            for (int i = 0; i < n; ++i)
            {
                node* p = new node;
                cin >> p->data;
                //尾插法
                last->next = p;
                last = p;
            }
            last->next = NULL;
        }
        void OutCome()
        {
            cout << "链表数据如下" << endl;
            for (node* p = head->next; p; p = p->next)
                cout << p->data << '\t';
            cout << endl;
        }
        void Insert()
        {
            cout << "输入要插入的序号为" << endl;
            node* p = new node;
            cin >> p->data;
            p->next = NULL;
            cout << "输入在哪个序号前插入" << endl;
            int t;
            cin >> t;
            node* q = head->next, * o = head;//o记录q的前一个结点
            while(q)
            {
                if(q->data!=t)
                {
                    o = o->next;
                    q = q->next;
                }
                else
                {
                    p->next = q;
                    o->next = p;
                    break;
                }
            }
            if(q==NULL)cout << "序号输入有误" << endl;
            else
            {
                cout << "插入后结果如下" << endl;
                for (node* p = head->next; p; p = p->next)
                    cout << p->data<<'\t';
                cout << endl;
            }
        }
    };
    int main()
    {
        List l;
        l.CreateList();
        l.OutCome();
        l.Insert();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里