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");
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
插入的时候注意插入位置。
运行结果如下:
a存在的情况:
a存在且是最后一个数字的情况:
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 = 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");
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!