线性表的基本操作和执行若干随机插入删除操作,记录在顺序表和链表中执行插入或删除操作时间,代码
时间: 2024-05-06 18:16:22 浏览: 56
以下是顺序表和链表的基本操作及随机插入删除操作的时间记录代码。
顺序表基本操作:
```c++
#include <iostream>
#include <ctime>
using namespace std;
const int MAXN = 100000; // 线性表最大长度
int a[MAXN]; // 定义顺序表
int n; // 线性表长度
// 初始化线性表
void init() {
n = 0;
}
// 插入元素
void insert(int x, int pos) {
if (pos < 1 || pos > n+1) {
cout << "插入位置不合法!" << endl;
return;
}
if (n >= MAXN) {
cout << "线性表已满,无法插入!" << endl;
return;
}
for (int i = n; i >= pos; i--) {
a[i+1] = a[i];
}
a[pos] = x;
n++;
}
// 删除元素
void del(int pos) {
if (pos < 1 || pos > n) {
cout << "删除位置不合法!" << endl;
return;
}
for (int i = pos; i < n; i++) {
a[i] = a[i+1];
}
n--;
}
// 输出线性表
void print() {
for (int i = 1; i <= n; i++) {
cout << a[i] << " ";
}
cout << endl;
}
int main() {
init(); // 初始化线性表
srand(time(0)); // 初始化随机种子
clock_t start, end; // 记录时间
start = clock(); // 记录插入开始时间
for (int i = 1; i <= MAXN/2; i++) {
insert(rand(), rand() % n + 1); // 随机插入元素
}
end = clock(); // 记录插入结束时间
cout << "插入" << MAXN/2 << "个元素的时间为:" << (double)(end-start)/CLOCKS_PER_SEC << "秒" << endl;
start = clock(); // 记录删除开始时间
for (int i = 1; i <= MAXN/4; i++) {
del(rand() % n + 1); // 随机删除元素
}
end = clock(); // 记录删除结束时间
cout << "删除" << MAXN/4 << "个元素的时间为:" << (double)(end-start)/CLOCKS_PER_SEC << "秒" << endl;
return 0;
}
```
链表基本操作:
```c++
#include <iostream>
#include <ctime>
using namespace std;
struct ListNode {
int val;
ListNode* next;
};
ListNode* head; // 定义链表头指针
// 初始化链表
void init() {
head = new ListNode();
head->next = NULL;
}
// 插入元素
void insert(int x, int pos) {
ListNode* p = head;
for (int i = 1; i < pos; i++) {
if (p->next == NULL) {
cout << "插入位置不合法!" << endl;
return;
}
p = p->next;
}
ListNode* q = new ListNode();
q->val = x;
q->next = p->next;
p->next = q;
}
// 删除元素
void del(int pos) {
ListNode* p = head;
for (int i = 1; i < pos; i++) {
if (p->next == NULL) {
cout << "删除位置不合法!" << endl;
return;
}
p = p->next;
}
ListNode* q = p->next;
p->next = q->next;
delete q;
}
// 输出链表
void print() {
ListNode* p = head->next;
while (p != NULL) {
cout << p->val << " ";
p = p->next;
}
cout << endl;
}
int main() {
init(); // 初始化链表
srand(time(0)); // 初始化随机种子
clock_t start, end; // 记录时间
start = clock(); // 记录插入开始时间
for (int i = 1; i <= MAXN/2; i++) {
insert(rand(), rand() % n + 1); // 随机插入元素
}
end = clock(); // 记录插入结束时间
cout << "插入" << MAXN/2 << "个元素的时间为:" << (double)(end-start)/CLOCKS_PER_SEC << "秒" << endl;
start = clock(); // 记录删除开始时间
for (int i = 1; i <= MAXN/4; i++) {
del(rand() % n + 1); // 随机删除元素
}
end = clock(); // 记录删除结束时间
cout << "删除" << MAXN/4 << "个元素的时间为:" << (double)(end-start)/CLOCKS_PER_SEC << "秒" << endl;
return 0;
}
```
阅读全文