> 技术文档 > 算法竞赛阶段二-数据结构(33)数据结构链表模拟实现

算法竞赛阶段二-数据结构(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;
   }

上海别克