顺序表排重

#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 10 //初始分配量
#define LISTINCREMENT 5 //分配增量
typedef int ElemType;
typedef  struct
{
    ElemType *elem;//存储空间基址
    int length; //当前长度
    int ListSize; //当前分配的存储
} sqlist;
int ListInsert_sq(sqlist &l, int i, int e)//增
{
    //线性表l第i个位置前插入e
    //从i起到最后一个向后移一位,注意先从最后一个开始移
    ElemType *p, *q;
    if(i < 1 || i > l.length + 1)//插入位置有误
        return 0;
    if(l.length >= l.ListSize)//存储空间已满,增加空间
    {
        ElemType *newelem = (ElemType *)realloc(l.elem,(l.ListSize+LISTINCREMENT) * sizeof(ElemType));
        if(!newelem)
        {
            exit(0);
        }
        l.elem = newelem;//更新基址
        l.ListSize += LISTINCREMENT;//更新分配量
    }
    q = &(l.elem[i-1]); //q是插入位置
    for(p = &(l.elem[l.length-1]); p >= q; p--)
    {
        *(p+1) = *(p);
    }
    *q = e;
    l.length++;
    return 1;
}
int InitList_sq(sqlist *l)  /*initial the list l*///形参是一个结构体指针
{
  l->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));//初始化十个int容量
  if(!l->elem) // if l->elem == NULL 前面有个!就代表if里的值为true
   {
      printf("无法分配空间!");
      return 1;
   }
  else
   {
      l->length=0;//当前长度置为0
      l->ListSize=LIST_INIT_SIZE;
      //printf("ok\n");
      return 0;
   }
}
void show(sqlist &l)//显示
{
    for(int i = 0; i < l.length; i++)
    {
        printf("%d ",l.elem[i]);
    }
    printf("\n");
}
void Delete_Repeat(sqlist &l)
{
    int count = 0;
    int i;
    for(i = 1; i < l.length && count+1<l.length;)
    {

        if(l.elem[count] == l.elem[count+1])
        {
            for(int j = count; j < l.length - 1; j++)
            {
                l.elem[j] = l.elem[j+1];
            }
            printf("\n移动");
            l.length--;
            show(l);
            printf("count = %d\n",count);
            count = 0;
        }
        else if(l.elem[count] != l.elem[count+1])
        {
            count++;
        }
    }
}
int main()
{
    sqlist L;
    int e, i;
    InitList_sq(&L);
    for(i = 1; i <= 5; i++)
    {
        scanf("%d",&e);
        ListInsert_sq(L,i,e);
    }
    show(L);
    Delete_Repeat(L);
    show(L);
    return 0;
}






全部评论

相关推荐

昨天 15:12
门头沟学院 运营
点赞 评论 收藏
分享
身边有人上海、深圳&nbsp;6、7k&nbsp;都去了,真就带薪上班了。
程序员小白条:木的办法, 以后越来越差,还是家附近宅着吧,毕业的人越来越多,岗位都提供不出来,经济又过了人口红利期
点赞 评论 收藏
分享
炫哥_:哥们项目描述里面vector和mysql之类的都要写吗,直接开头技术栈巴拉巴拉就行了,完全不是技术点啊
点赞 评论 收藏
分享
Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 12:04
毕业生招你惹你了,问一个发薪日来一句别看网上乱七八糟的你看哪个工作没有固定发薪日扭头就取消了面试就问了一句公司都是这个态度吗还搞上人身攻击了...
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务