算法竞赛阶段二-数据结构(33)数据结构链表模拟实现
//线性表
//表头,表尾,前区后驱
//顺序
//创建
#include
using namespace std;
//const int N=1e5;
const int N=1e6+10;
int arr[N];
int arr1[N];
int n=0;//标记多少个元素
int n1=0;
int n2=0;
//添加 下标是0不存
//尾插
// n++;
// arr[n]= x;
//arr[++n]=x;
void push_back(int x)
{
arr[++n]=x;
}
void push_back(int arr[],int& n,int x)
{
arr[++n]=x;
n2++;
}
//头插 先整体往后移一格,再加到arr【1】
// void push_front(int x)
// {
////从后往前移
//++n;
// for(int i=n;i>=1;i--)
// {
// arr[i]=arr[i-1];
// }
// arr[1]=x;
// }
//
void push_front (int x)
{
for(int i=n;i>=1;i--)
{
arr[i+1]=arr[i];
}
n++;arr[1]=x;
}
//在p处加一个,先移动再添加
void insert (int p,int x)
{
for(int i=n;i>=p;i--)
{
arr[i+1]=arr[i];
}
n++;
arr[p]=x;
}
//尾删
void pop_back()
{
n--;
}
//头删
void pop_front ()
{
for(int i=2;i<=n;i++)
arr[i-1]=arr[i];
n--;
}
// }不行,要从后往前
//void pop_front ()
//{
// for(int i=n)
// }
//任意位置p删除
//void pop(int p)
//{
// for(int i=p;i<n;i++)
// {
// arr[i]=arr[i+1];
// }
// n--;
//}
void erase (int p)
{
for(int i=p+1;i<=n;i++)
{
arr[i-1]=arr[i];
}n--;
}
//按值查找
int find(int x)
{
for(int i=1;i<=n;i++)
{
if(arr[i]==x)
return i;
}
return 0;
}
//按位查找
int findat(int i)
{
return arr[i];
}
//修改
void change (int p,int x)
{
arr[p]=x;
}
//清空
void clean ()
{
n=0;
} //注意要是new出来的要delete扫一遍
//打印
void printf()
{
for(int i=1;i<=n;i++)
cout<<arr[i]<<\' \';
cout<<endl;
}
void printf(int arr [],int n)
{
for(int i=1;i<=n;i++)
cout<<arr[i]<<\' \';
cout<<endl;
}
// int main()
// {
// //注意判断合法
// push_back(1) ;
// cout<<n<<endl;
// printf();
//
// push_back(2);
// cout<<n<<endl;
// printf();
// push_back(3);
// push_front(88);
// cout<<n<<endl;
// printf();
//
// insert(1,0);
// printf();
// pop_front ();
// printf();
//// pop(3);
//// printf();
//erase(2);
// printf();
//cout<<find(2)<<endl;
//cout<<findat(1);
// return 0;
//
// }
//多个表 arr1【n】 n1
//arr【2】 n2
//arr3 n3
//。。。。。
//函数参数也要 arr几和n几
int main()
{
push_back(arr1,n1,3);
cout<<n1<<endl;
cout<<n2<<endl;
printf(arr1,n1);
push_back(arr1,n1,4);
push_back(arr1,n1,5);
return 0;
}