建立一个顺序表,随机产生10个100以内的整数,并按要求完成:编写插入函数,从键盘输入待插入元素及插入位置,将完成插入后的顺序表输出; (4)编写删除函数,从键盘输入待删除元素位置,将该位置元素删除后的顺序表输出。
时间: 2024-03-14 18:48:03 浏览: 91
好的,这是一个关于顺序表的问题,我将回答你的问题并提供相应的代码示例。首先,我们需要了解什么是顺序表。
顺序表是一种线性表,它通过数组实现,存储在一块连续的内存空间中,支持随机访问,但插入和删除操作需要移动大量元素,效率较低。
现在,我将提供一个完整的C++代码示例,包括随机生成10个100以内的整数,插入函数和删除函数。
```
#include <iostream>
#include <ctime>
using namespace std;
const int MAXSIZE = 100;
//定义顺序表结构体
struct SqList{
int data[MAXSIZE];
int length;
};
//初始化顺序表
void InitList(SqList &L){
L.length = 0;
}
//打印顺序表
void PrintList(SqList L){
for(int i=0; i<L.length; i++){
cout << L.data[i] << " ";
}
cout << endl;
}
//随机生成10个100以内的整数
void CreateList(SqList &L){
srand(time(NULL));
for(int i=0; i<10; i++){
L.data[i] = rand() % 100;
}
L.length = 10;
}
//插入函数
bool InsertList(SqList &L, int pos, int x){
if(pos < 1 || pos > L.length+1){
return false;
}
if(L.length >= MAXSIZE){
return false;
}
for(int i=L.length; i>=pos; i--){
L.data[i] = L.data[i-1];
}
L.data[pos-1] = x;
L.length++;
return true;
}
//删除函数
bool DeleteList(SqList &L, int pos){
if(pos < 1 || pos > L.length){
return false;
}
for(int i=pos-1; i<L.length-1; i++){
L.data[i] = L.data[i+1];
}
L.length--;
return true;
}
int main(){
SqList L;
InitList(L);
CreateList(L);
cout << "随机生成的10个数为:";
PrintList(L);
int x, pos;
cout << "请输入待插入元素及插入位置:";
cin >> x >> pos;
if(InsertList(L, pos, x)){
cout << "插入后的顺序表为:";
PrintList(L);
} else {
cout << "插入失败!" << endl;
}
cout << "请输入待删除元素位置:";
cin >> pos;
if(DeleteList(L, pos)){
cout << "删除后的顺序表为:";
PrintList(L);
} else {
cout << "删除失败!" << endl;
}
return 0;
}
```
这段代码中,随机生成10个100以内的整数使用了随机数函数srand和rand,插入函数使用了for循环将插入位置之后的元素都向后移动一位,然后将待插入元素插入到指定位置。删除函数使用了for循环将删除位置之后的元素都向前移动一位,然后将表长减1。
希望这个代码示例能够帮助你理解顺序表的基本操作,如果还有什么问题,欢迎随时提出。
阅读全文