插入:
核心代码:
cpp
复制代码
void push_back(int x){//尾插法【时间复杂度:O(1)】
a[++n]=x;
}
void push_front(int x){//头插法【时间复杂度:O(N)】
for(int i=n;i>=1;i--){
a[i+1]=a[i];
}
a[1]=x;
n++;
}
void insert(int ret,int x){//在数组的任意位置插入元素【ret是索引,x是准备插入的元素值】
for(int i=n;i>=ret;i--){
a[i+1]=a[i];
}
a[ret]=x;
n++;
}
完整可执行代码:【只有插入】
cpp
复制代码
//时间复杂度计算的都是最坏情况下的次数
#include<bits/stdc++.h>
using namespace std;
const int N=1e6;
int n=0;
int a[N];
void push_back(int x){//尾插法【时间复杂度:O(1)】
a[++n]=x;
}
void push_front(int x){//头插法【时间复杂度:O(N)】
for(int i=n;i>=1;i--){
a[i+1]=a[i];
}
a[1]=x;
n++;
}
void insert(int ret,int x){//在数组的任意位置插入元素【ret是索引,x是准备插入的元素值】
for(int i=n;i>=ret;i--){
a[i+1]=a[i];
}
a[ret]=x;
n++;
}
void print(){//输出
for(int i=0;i<=n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
int main(){
print();
push_back(1);
print();
push_back(3);
print();
push_front(0);
print();
push_front(2);
print();
push_front(5);
print();
insert(4,9);
print();
insert(5,9);
print();
return 0;
}
运行结果:【主函数一步一输出,代码更加清晰直观】
删除:
核心代码:
cpp
复制代码
void pop_back(){//尾删法【时间复杂度:O(1)】
n--;
}
void pop_front(){//头删法【时间复杂度:O(N)】
for(int i=2;i<=n;i++){
a[i-1]=a[i];
};
n--;
}
void erase(int ret){//在数组的任意位置删除元素【ret是索引,x是准备插入的元素值】
for(int i=ret+1;i<=n;i++){
a[i-1]=a[i];
}
n--;
}
完整可执行代码:【插入+删除】
cpp
复制代码
//时间复杂度计算的都是最坏情况下的次数
#include<bits/stdc++.h>
using namespace std;
const int N=1e6;
int n=0;
int a[N];
void push_back(int x){//尾插法【时间复杂度:O(1)】
a[++n]=x;
}
void push_front(int x){//头插法【时间复杂度:O(N)】
for(int i=n;i>=1;i--){
a[i+1]=a[i];
}
a[1]=x;
n++;
}
void insert(int ret,int x){//在数组的任意位置插入元素【ret是索引,x是准备插入的元素值】
for(int i=n;i>=ret;i--){
a[i+1]=a[i];
}
a[ret]=x;
n++;
}
void pop_back(){//尾删法【时间复杂度:O(1)】
n--;
}
void pop_front(){//头删法【时间复杂度:O(N)】
for(int i=2;i<=n;i++){
a[i-1]=a[i];
};
n--;
}
void erase(int ret){//在数组的任意位置删除元素【ret是索引,x是准备插入的元素值】
for(int i=ret+1;i<=n;i++){
a[i-1]=a[i];
}
n--;
}
void print(){//输出
for(int i=0;i<=n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
int main(){
print();
push_back(1);
print();
push_back(3);
print();
push_front(0);
print();
push_front(2);
print();
push_front(5);
print();
insert(4,9);
print();
insert(5,9);
print();
cout<<"----------------"<<endl;
pop_back();
print();
pop_front();
print();
erase(3);
print();
return 0;
}
运行结果:【主函数一步一输出,代码更加清晰直观】
查找:
核心代码:
cpp
复制代码
int find(int x){//查找数组中是否有元素x,若有输出x的下标,若没有输出-1。
for(int i=1;i<=n;i++){
if(a[i]==x) return i;
}
return -1;
}
完整可执行代码:【插入+删除+查找】
cpp
复制代码
//时间复杂度计算的都是最坏情况下的次数
#include<bits/stdc++.h>
using namespace std;
const int N=1e6;
int n=0;
int a[N];
void push_back(int x){//尾插法【时间复杂度:O(1)】
a[++n]=x;
}
void push_front(int x){//头插法【时间复杂度:O(N)】
for(int i=n;i>=1;i--){
a[i+1]=a[i];
}
a[1]=x;
n++;
}
void insert(int ret,int x){//在数组的任意位置插入元素【ret是索引,x是准备插入的元素值】
for(int i=n;i>=ret;i--){
a[i+1]=a[i];
}
a[ret]=x;
n++;
}
void pop_back(){//尾删法【时间复杂度:O(1)】
n--;
}
void pop_front(){//头删法【时间复杂度:O(N)】
for(int i=2;i<=n;i++){
a[i-1]=a[i];
};
n--;
}
void erase(int ret){//在数组的任意位置删除元素【ret是索引,x是准备插入的元素值】
for(int i=ret+1;i<=n;i++){
a[i-1]=a[i];
}
n--;
}
int find(int x){//查找数组中是否有元素x,若有输出x的下标,若没有输出-1。
for(int i=1;i<=n;i++){
if(a[i]==x) return i;
}
return -1;
}
void print(){//输出
for(int i=0;i<=n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
int main(){
print();
push_back(1);print();
push_back(3);print();
push_front(0);print();
push_front(2);print();
push_front(5);print();
insert(4,9);print();
insert(5,9);print();
cout<<"----------------"<<endl;
pop_back();print();
pop_front();print();
erase(3);print();
cout<<"----------------"<<endl;
cout<<"查找5的下标是:"<<find(5)<<endl;
print();
cout<<"查找9的下标是:"<<find(9)<<endl;
print();
return 0;
}
运行结果:【主函数一步一输出,代码更加清晰直观】
修改:
核心代码:
cpp
复制代码
void change(int ret,int x){//将下标为ret的元素值改为x
a[ret]=x;
}
完整可执行代码:【插入+删除+查找+修改】
cpp
复制代码
//时间复杂度计算的都是最坏情况下的次数
#include<bits/stdc++.h>
using namespace std;
const int N=1e6;
int n=0;
int a[N];
void push_back(int x){//尾插法【时间复杂度:O(1)】
a[++n]=x;
}
void push_front(int x){//头插法【时间复杂度:O(N)】
for(int i=n;i>=1;i--){
a[i+1]=a[i];
}
a[1]=x;
n++;
}
void insert(int ret,int x){//在数组的任意位置插入元素【ret是索引,x是准备插入的元素值】
for(int i=n;i>=ret;i--){
a[i+1]=a[i];
}
a[ret]=x;
n++;
}
void pop_back(){//尾删法【时间复杂度:O(1)】
n--;
}
void pop_front(){//头删法【时间复杂度:O(N)】
for(int i=2;i<=n;i++){
a[i-1]=a[i];
};
n--;
}
void erase(int ret){//在数组的任意位置删除元素【ret是索引,x是准备插入的元素值】
for(int i=ret+1;i<=n;i++){
a[i-1]=a[i];
}
n--;
}
int find(int x){//查找数组中是否有元素x,若有输出x的下标,若没有输出-1。
for(int i=1;i<=n;i++){
if(a[i]==x) return i;
}
return -1;
}
void change(int ret,int x){//将下标为ret的元素值改为x
a[ret]=x;
}
void print(){//输出
for(int i=0;i<=n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
int main(){
print();
push_back(1);print();
push_back(3);print();
push_front(0);print();
push_front(2);print();
push_front(5);print();
insert(4,9);print();
insert(5,9);print();
cout<<"----------------"<<endl;
pop_back();print();
pop_front();print();
erase(3);print();
cout<<"----------------"<<endl;
cout<<"查找5的下标是:"<<find(5)<<endl;
print();
cout<<"查找9的下标是:"<<find(9)<<endl;
print();
cout<<"----------------"<<endl;
change(3,6);
cout<<"下标为3的元素值修改为6"<<endl;
print();
change(4,8);
cout<<"下标为4的元素值修改为8"<<endl;
print();
return 0;
}
运行结果:【主函数一步一输出,代码更加清晰直观】