数据结构---顺序表

 #include<bits/stdc++.h>
 using namespace std;
 typedef struct Node
 {
     int *elem;
     int  len;
     int listsize;
 }Sqlist;
 int initlist(Sqlist &L,int len)///初始化顺序表
 {
     if(len==0)
     {
         len=100;
     }
     L.elem=(int *)malloc(len*sizeof(int));///申请空间
     if(!L.elem)
     {
         return 0;
     }

     L.len=0;
     L.listsize=100;
     return 1;
 }
 int insertlist(Sqlist &L,int i,int e)///在i位置插入元素e
 {
    int *p,*q;
     if(i<0||i>L.len)///i值不合法
     {
         return 0;
     }
     if(L.len>=L.listsize)///空间不足
     {
         int *newbase = (int *)realloc(L.elem,(L.listsize+10)*sizeof(int));///重新申请空间
         if(!newbase)
         {
             return 0;
         }
         L.elem=newbase;
         L.listsize+=10;
    }
    q=&L.elem[i];
    for(p=&L.elem[L.len];p>=q;p--)
    {
        *p=*(p-1);///元素右移
    }
    *q=e;
    L.len++;
    return 1;
 }
 int deletelist(Sqlist &L,int e)///删除所有值为e的元素
 {
     int *p,*q;
     int i=0;
     while(i<L.len)
     {
         if(L.elem[i]==e)
         {
            q = &L.elem[i];
            for(p=q;p<&L.elem[L.len];p++)
            {
                *p=*(p+1);///元素向左移动
            }
            L.len--;///长度减一
         }
         else
         {
             i++;
         }
     }
 }
 int deletelist2(Sqlist &L,int i)///删除第i个元素
 {
    int *p,*q;
    q=&L.elem[i-1];
    for(p=q;p<&L.elem[L.len];p++)
    {
        *p=*(p+1);///元素向左移动
    }
    L.len--;///长度减一
 }
 int sortlist(Sqlist &L)///排序
 {
     sort(L.elem,L.elem+L.len);
 }
 int printlist(Sqlist &L)///打印
 {
     for(int i=0;i<L.len;i++)
     {
         printf("%d ",L.elem[i]);
     }
     printf("\n");
 }
 int main()
 {
    int n;
    while(~scanf("%d",&n))
    {
        int num;
        Sqlist L;
        initlist(L,n);
        for(int i=0;i<n;i++)
        {
            scanf("%d",&num);
            insertlist(L,i,num);
        }
        sortlist(L);
        printlist(L);
        int num2;
        scanf("%d",&num2);
        deletelist(L,num2);
        printlist(L);
        scanf("%d",&num2);
        deletelist2(L,num2);
        printlist(L);
    }
     return 0;
 }


猜你喜欢

转载自blog.csdn.net/qq_37405320/article/details/78496618