精华内容
下载资源
问答
  • 问题描述:从顺序表中删除重复元素,并使得剩余元素间的相对次序保持不变。 解决思路: PS:将结果表归为一个新表,理解较为容易(接下来以旧表和新表相称) ①先定义新表的长度和迭代器(初始长度为1,迭代器置0...

    问题描述:从顺序表中删除重复的元素,并使得剩余元素间的相对次序保持不变。

    解决思路:
    PS:将结果表归为一个新表,理解较为容易(接下来以旧表和新表相称)
    ①先定义新表的长度和迭代器(初始长度为1,迭代器置0,即将第一个数值归入新表)
    ②旧表迭代器置1(第二个值)
    ③旧表迭代器后移一位,新表迭代器归0
    ③旧表每向后移动一次迭代器,需遍历一次新表与该值进行比对
    ⅰ、遍历完成新表未发现相等情况,则将该数值归入新表,新表长度加1
    ④若迭代器小于表长,回第二步

    具体代码:

    int num = 1;                    //新表的长度
    if(size > 1) {
      	 int nRank = 0;                //新表的迭代器
     	  //遍历旧表,比较数值
    	   for(int oRank = 1; oRank < size ; oRank++) { 
      		  nRank = 0;              //迭代器重置
       		 //此处遍历新表,与旧表中的数据进行比对
     		 while(nRank < num && a[nRank] != a[oRank])
       			  nRank++;
        		//如果遍历整个新表都未发现相同数值,则表长加一,加入新值
     		 if(nRank == num)
      		  {
     			    a[nRank] = a[oRank];
     			    num = nRank+1;
     		   }
       	   }
      }
      return num;    //返回新表长
    

    测试结果:
    在这里插入图片描述

    展开全文
  • 算法:删除顺序表中重复元素

    千次阅读 2019-04-14 19:19:47
    //删除数组中重复元素 //思路:通过起始位置的元素,逐个和后面的元素进行比较,找到相同的元素后执行删除操作。没有发现执行第二次循环 void purge(int a[], int len) { int i = 0, j; while (i<len) //...
    //删除数组中重复的元素  
    //思路:通过起始位置的元素,逐个和后面的元素进行比较,找到相同的元素后执行删除操作。没有发现执行第二次循环
    
    
    void purge(int a[], int len)
    {
    	int i = 0, j;
    	while (i<len)   //从数组开始第一个位置开始循环
    	{
    		j = i + 1;
    		while (j<len)
    		{
    
    			if (a[i] == a[j])
    			{
    				Delete();         //此处执行删除操作
    			}
    			else
    			{
    				j++;
    			}
    		}
    	i++;
    		
    	}
    	
    }
    

     

    展开全文
  • 删除顺序表中值重复元素

    千次阅读 2019-01-12 16:08:53
    设计一个算法,删除顺序表中值重复元素(值相同的元素仅保留第一个),使得表中所有元素的值均不相同。其中顺序表的动态分配用C语言描述如下:   #define InitSize 100 //表长度的初始定义 typedef int ...

    题目描述

    设计一个算法,删除顺序表中值重复的元素(值相同的元素仅保留第一个),使得表中所有元素的值均不相同。其中顺序表的动态分配用C语言描述如下:

     

    #define InitSize 100          //表长度的初始定义
    typedef int DataType;         //定义表元素的数据类型
    typedef struct {              //顺序表的定义
    	DataType *data;       //指示动态分配数组的指针
    	int maxSize, n;       //数组中最大容量和当前个数
    }SeqList;
    

     

    输入描述

    有多组测试数据,在每组测试数据的第一行输入顺序表中元素的个数 n;如果n不为0,第二行输入n 个数,用空格隔开。

    输出描述

    如果顺表不为空,输出删除后顺序表里的元素;

    如果顺序表为空,输出 EMPTY

    输入样例

    6
    1 -2 3 -2 4 1
    0
    8
    -1 5 7 9 5 3 -1 2
    

    输出样例

    1 -2 3 4
    EMPTY
    -1 5 7 9 3 2 

     

     

    #include<stdio.h>
    
    int a[100000],vis1[100000+10]={0},vis2[100000+10];
    
    int main()
    {
    	int n,m,j,k,i,T;
    	while (~scanf("%d",&n))
    	{
    		for (i=0;i<100000+10;i++)
    		{
    			vis1[i] = 0;
    			vis2[i] = 0;
    		}
    		
    		for (i=0;i<n;i++)
    		{
    			scanf("%d",&a[i]);
    			if (a[i]>=0)
    			vis1[a[i]]=1;
    			else
    			vis2[-a[i]]=1;	
    		}
    		
    		if (n==0)
    		{
    			printf("EMPTY\n");
    			continue;
    		}	
    		for (i=0;i<n;i++)
    		{
    			if (a[i]>=0)
    			{
    				if (vis1[a[i]]==1)
    				{
    					printf("%d ",a[i]);
    					vis1[a[i]] = 0;
    				}
    			}
    			else
    			{
    				if (vis2[-a[i]]==1)
    				{
    					printf("%d ",a[i]);
    					vis2[-a[i]] = 0;
    				}
    			}
    		}
    		printf("\n");
    	}
    	return 0;
    }

     

    展开全文
  • 利用顺序表删除重复元素

    千次阅读 2016-03-19 19:43:52
    刷题时经常遇到要删除一段给定的数据中重复的数,可以利用线性表来完成这样的程序,这里我介绍顺序表删除重复元素。#include <iostream> using namespace std; typedef int ElemType; #define MaxSize 20 ...

    刷题时经常遇到要删除一段给定的数据中重复的数,可以利用线性表来完成这样的程序,这里我介绍顺序表删除重复元素

    #include <iostream>
    using namespace std;
    typedef int ElemType;
    #define MaxSize 20
    struct Seqlist{
        ElemType data[MaxSize];
        int length;
    };
    void initial(Seqlist &L)
    {
        cout<<"正在创建新的顺序表 "<<endl;
        cout<<"请输入创建的顺序表的长度:";
        cin>>L.length;
        int i;
        cout<<endl<<"请输入顺序表内所有的数据:";
        for(i=0;i<L.length;i++)
            cin>>L.data[i];
        return ;
    }
    void DeleteSame(Seqlist &L)
    {
        cout<<"正在删除顺序表中重复的元素..."<<endl;
        int i,j,k;
        for(i=0;i<L.length-1;i++)             //i遍历顺序表
        { 
            for(j=i+1;j<L.length;j++)         //j遍历i之后的顺序表元素,并每次与i位进行比较
                if(L.data[i]==L.data[j])
            {
                for(k=j;k<L.length-1;k++)      //遇到重复元素,将该位后面的元素全部一次左移
                    L.data[k]=L.data[k+1];
                L.length--;                  //删除元素后,顺序表长度减1
            }
        }
        return ;
    }
    void ShowSeqlist(Seqlist L)
    {
        cout<<"显示顺序表:";
        int i;
        for(i=0;i<L.length;i++)
            cout<<L.data[i]<<" ";
        cout<<endl;
    }
    int main()
    {
        Seqlist L;
        initial(L);
        ShowSeqlist(L);
        DeleteSame(L);
        cout<<"删除成功。"<<endl;
        ShowSeqlist(L);
    
        return 0;
    }
    
    
    展开全文
  • 我不知道怎么用顺序表做所以我是用链表做的,whatever,ac is OK 23333 #include #include #include using namespace std; int num; typedef struct node { int Length; int data; struct node *next; }...
  • 顺序表之有序顺序表重复元素删除

    千次阅读 2020-06-16 21:12:37
    (2.2.4-6)从有序顺序表中删除所有其值重复元素,使表中所有元素的值均不同。 不考虑时间复杂度,空间复杂度为o(1) 思路:例SqList L = { 1, 2, 2, 3, 4, 4 },将每一个元素与之后面的元素进行比较,1与2比较...
  • 题目:从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同。 关键字:有序顺序表 删除重复元素 思路 关注:因为是有序表,所以值相同的元素一定在连续的位置上, 用类似于直接插入排序的思想 1.初始时...
  • 从有序顺序表中删除所有其值重复元素,使表中所有元素的值均不同。 //删除有序顺序表中所有值重复元素 //算法思想:相同元素在有序表中位置连续,遍历顺序表,从第一个值开始向后判断。 //若相等则继续往后判断...
  • 设计一个算法从顺序表中删除重复元素,并使sheng'yu
  • 题目:有序顺序表中删除所有其值重复元素,使表中所有元素的值均不同 #include<stdio.h> typedef int ElemType; typedef struct { ElemType *data;//指示动态分配数组的指针 int Maxsize,length;//数组的...
  • 问题描述:设计一个算法从顺序表中删除重复元素,并使剩余元素间的相对次序保持不变。 例如:原顺序表为{4 2 8 4 2 1 2 1 3 5 2},执行该算法后,顺序表为:{4 2 8 1 3 5}。 另外,顺序表的初始值通过调用算法...
  • 从一个有序顺序表中删除重复元素并返回新的表长,要求空间复杂度为O(1); */ # include typedef int ElemType; typedef struct { ElemType data[100]; int length; }SqList; int removeSame1(SqList &B) { ...
  • 顺序表整理,其中j--为最关键的一步,其他的没有,为查找删除的综合
  • //从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不相同 typedef struct{ int data[MaxSize]; int Length; }SqList; //扫描L,记录重复元素的个数,同时将当前元素前移k个位置 bool delete_all...
  • } int main() { //-------------------初始化顺序表-------------------- struct SqList L; if (InitList(&L) == true) { printf("顺序表初始化成功!\n"); } print(&L); printf("\n\n"); printf("删除相同元素后\n...
  • 由于是有序顺序表,值相同的元素一定在连续的位置上,用类似于直接插入排序的思想,初始时将第一个元素视为非重复的有序表。之后依次判断后面的元素是否是与前面非重复有序表的最后一个元素相同,若相同则继续向后...
  • 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复元素删除(值相同的元素只保留最后输入的一个)。 Input 第一行输入元素个数 n (1 <= n <= 15); 第二行输入 n 个整数,保证在 int 范围...
  • 顺序表--删除重复元素

    千次阅读 2018-12-06 18:12:26
    1000)的顺序表中可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素顺序表中删除,使该表由一个“非纯表”(值相同的元素在表中可能有多个)变成一个“纯表”(值相同的...
  • 1000)的顺序表中可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素顺序表中删除,使该表由一个“非纯表”(值相同的元素在表中可能有多个)变成一个“纯表”(值相同的...
  • 顺序表中的三种删除重复元素的思想

    千次阅读 多人点赞 2018-10-01 21:39:41
    删除顺序表中的相同元素的三种思想,下面归纳为三个名称,以方便记忆: 定位赋值法、判断回退法、双端判别交换法 图解如下:   完整de代码如下: #include&lt;iostream&gt; using namespace ...
  • 题目:从有序的顺序表中删除所有其值相同的元素,使表中的所有元素的值均不相同。算法思想:因为是顺序表,用类似于直接插入排序的思想,将第一个元素看作非重复的有序表,之后依序判断后面的元素是否和前面非重复...
  • #include <stdio.h> #include <stdlib.h> #define DATATYPE int ...void INITATE(SEQUENLIST *L)//初始化线性表,参数L是的名字 { L->len=0; } void CREAT(SEQUENLIST *L,int n)
  • 题目 .../* 删除顺序表中重复元素 */ /* &list指的是要执行删除重复元素操作的顺序表 */ void deleteRe(SqlList &list){ for(int i=0;i<list.length-1;i++){ if(list.a[i]==list.a
  • 1000)的顺序表中可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素顺序表中删除,使该表由一个“非纯表”(值相同的元素在表中可能有多个)变成一个“纯表”(值相同的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 727
精华内容 290
关键字:

删除顺序表中重复元素