完善代码,数据结构链表顺序表

1.建立一个单链表,随机产生10个100以内的整数,并按要求完成:
(1)在屏幕上显示单链表中的10个整数;
(2)删除值为a的结点,若不存在a,则把a插入到表尾,显示更新后的单链表;
2.建立一个顺序表,随机产生10个100以内的整数,并按要求完成:
(1)在屏幕上显示顺序表中的10个整数;
(2)把值为b的元素插入到值为a的元素后面,若不存在a,则把b插入到表尾,显示更新后的顺序表;

2.的部分代码,没有完成第二个要求,

#include<iostream>
#include<cstdlib> 
using namespace std;
const int Maxsize=100;
class SeqList
{
    public:
        SeqList()
        {
            length=0;
        }
        SeqList(int a[],int n);
        ~SeqList()
        {
        };
        void printList();
    private:
        int data[Maxsize];
        int length;
};
SeqList::SeqList(int a[],int n)
{
    for(int i=0;i<n;i++)
    data[i]=a[i];
    length=n;
}

void SeqList::printList()
{
    for(int i=0;i<length;i++)
    {
        cout<<data[i]<<"  ";
    }
    cout<<endl;
}
int main()
{
    int a[Maxsize],n=10;
    for(int i=0;i<n;i++)
    a[i]= rand()% 100;
    SeqList List(a,n);
    List.printList();
    system("pause");
}
    

循环找到a的元素位置,把a之后的元素都后移一个位置,把b插入到a之后的位置即可
你题目的解答代码如下:

#include<iostream>
#include<cstdlib>
using namespace std;
const int Maxsize=100;
class SeqList
{
    public:
        SeqList()
        {
            length=0;
        }
        SeqList(int a[],int n);
        ~SeqList()
        {
        };
        void printList();
        void insert(int a,int b);
    private:
        int data[Maxsize];
        int length;
};
SeqList::SeqList(int a[],int n)
{
    for(int i=0;i<n;i++)
    data[i]=a[i];
    length=n;
}

void SeqList::printList()
{
    for(int i=0;i<length;i++)
    {
        cout<<data[i]<<"  ";
    }
    cout<<endl;
}

void SeqList::insert(int a,int b)
{
    int i,j;
    for(i=0; i<length-1; i++)  //循环找到a的元素位置, 最后一个元素不用判断, 当a是最后一个元素或者没有找到a, i都是最后一个元素下标
        if (data[i]==a)
            break;
    for(j=length; j>i+1; j--)  //把a之后的元素都后移一个位置
        data[j] = data[j-1];
    data[i+1] = b;  //把b插入到a之后的位
    length++;
}
int main()
{
    int a[Maxsize],n=10;
    int va,vb;
    for(int i=0;i<n;i++)
        a[i]= rand()% 100;
    SeqList List(a,n);
    List.printList();
    cin >> va >> vb;
    List.insert(va,vb);
    List.printList();
    system("pause");
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

插入的时候注意插入位置。
运行结果如下:
a存在的情况:

img

a存在且是最后一个数字的情况:

img

a不存在的情况:

img

代码:

#include <iostream>
#include <cstdlib> 
using namespace std;
const int Maxsize = 100;
class SeqList
{
public:
    SeqList()
    {
        length = 0;
    }
    SeqList(int a[], int n);
    ~SeqList()
    {
    };
    void printList();
    void insert(int a, int b);
private:
    int data[Maxsize];
    int length;
};
SeqList::SeqList(int a[], int n)
{
    for (int i = 0; i < n; i++)
        data[i] = a[i];
    length = n;
}

void SeqList::printList()
{
    for (int i = 0; i < length; i++)
    {
        cout << data[i] << "  ";
    }
    cout << endl;
}

void SeqList::insert(int a, int b)
{
    int i = 0;
    int j = 0;
    for (; i < length; i++)
    {
        if (data[i] == a)
            break;
    }
    if (i == length)
    {
        data[length] = b;
        length++;
    }
    else
    {
        for (j = length; j > i + 1; j--)
            data[j] = data[j - 1];
        data[i + 1] = b;
        length++;
    }
    

}
int main()
{
    int a[Maxsize], n = 10;
    for (int i = 0; i < n; i++)
        a[i] = rand() % 100;
    SeqList List(a, n);
    List.printList();

    int m, q;
    cout << "请输入a和b(将b插在a后面):";
    cin >> m >> q;
    List.insert(m, q);
    List.printList();
    system("pause");
}



您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632