精华内容
下载资源
问答
  • 线性表删除元素
    千次阅读
    2019-09-27 07:40:38

    在线性表中删除指定元素:

     1 class deleelem_in_linelist():
     2     def __init__(self,list,maxsize):
     3         self.data = list
     4         self.length = len(list)
     5         self.maxsize = maxsize
     6     def dele_elem_in_list(self,e):
     7         for i in self.data:
     8             if i == e:
     9                 self.data.remove(i)
    10                 print("删除元素%s成功"%e)
    11             # else:
    12             #     print("线性表中不存在元素%s"%e)
    13         return self.data
    14 
    15 if __name__ == '__main__':
    16     ob = deleelem_in_linelist([1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 14], 20)
    17     print(ob.data)
    18     ob.dele_elem_in_list(15)
    19     print(ob.data)
    20     ob.dele_elem_in_list(10)
    21     print(ob.data)

    在线性表指定位置删除元素:

     1 """
     2 在线性表中删除某个位置的元素
     3 """
     4 class Solution():
     5     def __init__(self,data,maxsize):
     6         self.data = data
     7         self.maxsize = maxsize
     8         self.length = len(data)
     9     #删除某个位置的元素
    10     def del_index_elem(self,i):
    11         if i>self.length or i<1:
    12             print("该位置无法删除元素")
    13         else:
    14             e = self.data[i-1]
    15             for j in range(i-1,self.length-1):
    16                 self.data[j] = self.data[j+1]
    17             #将最后一位置为空
    18             self.data[self.length-1] = None
    19             #线性表长度减一
    20             self.length -= 1
    21             return self.data
    22 
    23 if __name__ == '__main__':
    24     ob = Solution([1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 14], 20)
    25     # print(ob.data)
    26     ob.del_index_elem(15)
    27     print(ob.data)
    28     ob.del_index_elem(6)
    29     print(ob.data)

     

    posted on 2019-09-14 00:10  目标代码机器人 阅读( ...) 评论( ...) 编辑 收藏

    转载于:https://www.cnblogs.com/carol-main-blog/p/11518036.html

    更多相关内容
  • 删除线性表相同元素

    2015-11-26 17:36:53
    删除线性表相同元素的代码,以运行
  • 统计剩余的,然后用在循环中扶正位置... / 保存线性表中最后一个元素的位置 */ }; List ReadInput(); /* 裁判实现,细节不表。元素从下标0开始存储 / void PrintList( List L ); / 裁判实现,细节不表 */ List Delet
  • 线性表删除指定元素

    2022-08-12 20:32:15
    线性表删除指定元素
    #include <bits/stdc++.h>
    
    using namespace std;
    
    const int MAX_N = 1e4;
    
    typedef struct SqList
    {
        int data[MAX_N];
        int length;
    } SqList;
    
    void deleteX(SqList &L, int x)
    {
        int k = 0;
        for (int i = 0; i < L.length; i++)
        {
            if (L.data[i] != x)
            {
                L.data[k] = L.data[i];
                ++k;
            }
        }
        L.length = k;
    }
    
    int main()
    {
        SqList L;
        L.data[0] = 1;
        L.data[1] = 2;
        L.data[2] = 3;
        L.data[3] = 3;
        L.data[4] = 7;
        L.data[5] = 8;
        L.data[6] = 10;
        L.length = 7;
        cout << "begin: ";
        for (int i = 0; i < L.length; i++)
        {
            cout << L.data[i] << " ";
        }
        deleteX(L, 3);
        cout << "\nafter: ";
        for (int i = 0; i < L.length; i++)
        {
            cout << L.data[i] << " ";
        }
        return 0;
    }
    
    展开全文
  • 大家好,我是执念斩长河,一个刚刚学习数据结构的学渣。博文旨在解决设计一个算法,删除顺序表L中所有具有给定值x的元素

    题目再现

    设计一个算法,删除顺序表L中所有具有给定值x的元素

    测试效果

    在这里插入图片描述

    解题思路

    算法用指针i向后继方向逐个检查顺序表中元素,用k记录压缩含x结点以后的后续结点应移动到哪个位置。一趟扫描完成删除顺序表所有含x结点的元素。
    按照复合条件判断的短路原则,当L.data[i]==x时不再判++k!=i.算法时间复杂度为O(n).最好情况是序列中没有值等于x的元素或所有元素的值都等于x,不需要移动元素.

    核心源码

    void deleteValue(SeqList& L,DataType x) {
        int k = -1;
        for(int i =0;i<L.n;i++)
            if(L.data[i] != x && ++k != i)
                L.data[k] = L.data[i];
        L.n = k+1;
    }
    
    

    复杂度分析

    时间复杂度: O ( n ) O(n) O(n)
    空间复杂度: O ( 1 ) O(1) O(1)

    完整源码

    #include<stdio.h>
    #include<stdlib.h>
    #define initSize 100
    typedef int DataType;
    typedef struct{
        DataType *data;
        int maxSize,n;
    }SeqList;
    
    
    void initList(SeqList& L) {
        //调用方式initList(L),输入:未初始化的顺序表L;输出;已初始化的顺序表L
        L.data = (DataType *) malloc(initSize*sizeof(DataType));
        if(!L.data) {
            printf("分配有误....\n");
            exit(1);
        }
        L.maxSize = initSize;
        L.n = 0;
    }
    
    
    
    void createList(SeqList &L,DataType A[],int n) {
        initList(L);
        for(int i = 0;i<n;i++)
            L.data[i] = A[i];
        L.n = n;
    }
    
    void printList(SeqList& L) {
        for(int i =0;i<L.n;i++)
            printf("%d ",L.data[i]);
        printf("\n");
    
    }
    
    
    
    
    //设计一个算法,删除顺序表L中所有具有给定值X的元素
    void deleteValue(SeqList& L,DataType x) {
        int k = -1;
        for(int i =0;i<L.n;i++)
            if(L.data[i] != x && ++k != i)
                L.data[k] = L.data[i];
        L.n = k+1;
    }
    
    int main()
    {
    
        SeqList A,B;
        //模拟1的情况
        int arr1[5] = {5,2,9,2,1};
        createList(A,arr1,sizeof(arr1)/sizeof(int));
        printList(A);
        deleteValue(A,2);
        printf("deleted:..\n");
        printList(A);
    
        return 0;
    }
    
    
    
    
    
    

    源码跑路

    假如我们输入的是{5,2,9,2,1},传入删除2按照代码的正常运行结果是{5,9,1}

    i = 0

    L.data[0] = 5 != 2 && ++(-1) == 0
    for循环继续 k = 0

    i = 1

    L.data[1] == 2
    for循环继续 k = 0

    i = 2

    L.data[2] = 9 != 2 && 1 != 2
    L.data[1] = L.data[2]
    这里已经发生前移,本质上利用了i和k的差值进行赋值
    for循环继续 k=1

    i = 3

    L.data[3]=2 == 2
    for 循环继续 k=1

    i = 4

    L.data[4] = 1 != 2 && 2 != 4
    L.data[2] = L.data[4]
    for 循环继续 k = 2

    i = 5 跳出循环!

    参考文献

    殷人昆著.数据结构与算法解析.北京:清华大学出版社,2021.4

    临别赠语

    挺巧妙的一个算法,利用了彼此的差值,进行赋值!

    展开全文
  • 线性表元素删除

    2019-10-15 10:31:57
    #include"stdio.h" #include"windows.h" #define maxsize 10 typedef struct { int a[maxsize]; int last;...int delList1(A *b, int k)//删除结构体a中位置为k的元素 { int i; if (k > b->...
    #include"stdio.h"
    #include"windows.h"
    #define maxsize  10
    typedef struct 
    {
    	int a[maxsize];
    	int last;
    }A; 
    //delLIst1 函数为删除1个元素
    int delList1(A *b, int k)//删除结构体a中位置为k的元素
    {
    	int i;
    	if (k > b->last || k < 0)
    	{
    		printf("该删除位置不合法");
    		return 0;
    	}
    		for ( i= k; i <= b->last; i++)
    		{
    			b->a[i] = (b->a[i+1]);
    		}
    	   b->last--;
    	   for(i=0;i<=b->last;i++)
    	   {
    		   printf("%d\n", b->a[i]);
    	   }
    	   return 1;
    }
    //delList2为删除多个元素
    int delList2(A*b, int k,int n)//k代表删除位置,n代表删除个数
    {
    	int i;
    	if (k + n > b->last || k < 0)
    	{
    		printf("删除位置不合理,元素或许不够");
    		return 0;
    	}
    	while (n > 0)
    	{
    		for (i = k; i <= b->last; i++)
    		{
    			b->a[i] = b->a[i + 1];
    		}
    		b->last--;
    		n--;
    	}
    	for (i = 0; i <= b->last; i++)
    	{
    		printf("%d\n", b->a[i]);
    	}
    	return 0;
    }
    int main()
    {
    	A b = { {4,3,1,5,3,2,1},6 }, *b1; b1 = &b; 
    	//A *b = { {4,3,1,5,3,2,1},3 };//我们发现结构体指针变量初始化失败
        //delList1(b1, 2);
    	delList2(b1, 2, 3);
    	system("pause");
    	return 0;
    

    总结 线性表的定义是在结构体内 以数组的形式定义的
    删除操作 就需要借助结构体指针变量删除
    删除时 后边元素前移就ok
    注意判断删除的合法性

    展开全文
  • 线性表的创建,元素删除 #include<stdio.h> #define MAXSIZE 100 typedef int ElemType; /*定义线性表*/ typedef struct { ElemType list[MAXSIZE];//顺序表元素 int last; //顺序表当前长度 }SeqList; /*...
  • 线性表——删除重复元素

    千次阅读 2021-09-16 20:30:41
    题目:移除线性表中的所有重复元素;不要使用额外的数组空间,在使用 O(1) 额外空间的条件下完成。 typedef int DataType; struct seqList { int MAXNUM; // 能存放的最大元素个数 int curNum; // 数据...
  • 包含一个函数,参数为链表表头地址,返回经过处理的新的链表表头地址。该函数将一个按照升序排列的链表中的重复元素删除,时间复杂度为(n)
  • 线性表元素插入和删除

    千次阅读 2020-08-10 09:24:01
    单链表(链式存储结构)删除 有头结点的单链表 在开始结点前插入元素 等同在头结点后插入元素 不含头结点的单链表 在开始结点前插入元素 s->next = head; head = s; 因此含有头结点的单链表比不含头结点的...
  • 线性表元素的区间删除题目答案注意 题目 答案 List Delete( List L, ElementType minD, ElementType maxD ) { int i,j=0; for(i=0;i<=L->Last;i++) { if(L->Data[i]>minD&&L->Data[i...
  • 线性表删除操作

    千次阅读 2019-08-26 20:46:40
    //删除操作 Status DeleatElem(sqlist *l,int i) { if ((i<1)||(i>MAXSIZE)) { return err; } if (l->length==MAXSIZE) { return err; } if (i<=l->length) { for (k = i+1; k <= l...
  • 第08话:线性表删除某个元素

    千次阅读 2021-03-16 21:58:23
    根据之前定义的线性表ADT,现在还剩下一个操作,就是删除了。今天把这个操作弄完。了解线性表的插入,就很容易理解线性表删除了。删除就是插入的逆过程。删除算法的思路:如果删除位置不合理,抛出异常;取出删除...
  • } } void shanchu1(sqlist &L,int x) //删除指定的元素 方法1 { int i=0,j; while((i)&&L.a[i]!=x) { i++; } if(i==L.length) { return ; } while(i) { if(L.a[i]==x) { j=i; for(j=i;j;j++) { L.a[j]=L.a[j+1]; } ...
  • 题目:给定一个长度为n(n≤10000)的非递减序列a,删除其中所有的重复元素,得到一个严格单调递增序列。例如:输入 n=5 ,元素为 1 2 3 2 4,输出1 2 3 4 以下是题目解析: 小伙伴们觉得不错的话给个赞赞吧~ /*...
  • 题目要求删除线性表中中所有值大于minD并且小于MaxD的元素,并且保持剩余元素按照原来顺数存储。   看到题目后我最开始想的便是for循环判断,然后找到后再for循环移动删除,但是这样时间复杂度是O(n方)发现有一...
  • 数据结构-线性表删除 C语言源码

    千次阅读 2019-03-17 13:08:37
    数据结构-线性表删除 C语言源码 #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; struct SC{ int*elem; int length; }; void ko(SC&amp;amp; l,int n) { int hj; l....
  • 删除有序线性表中所有重复元素
  • 以较高的效率实现删除线性表元素值在x到y(x和y自定)之间的所有元素。#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #define X 10 #define Y 30 #define N 20 int A[N] = { 2, 5, 15, 30, 1...
  • 满意答案puiawxsj1推荐于 2017.11.25采纳率:40%...因为你没有写出具体的线性表,所以我假设该线性表是需要手动输入的!代码如下运行通过:#include #include #include typedef int ElemType;typedef struct Node{...
  • 顺序表相关的删除操作
  • maxD,则把这个元素删除 思路:新建一个下标,指向处理后的数组当前位置,若符合要求,则把原数组的元素放进来,否则不放进来。遍历完原数组之后,应当把L->Last修改成j-1,因为前面的j++,已经为下一个处理做准备...
  • 1、线性表的定义:(1)、线性表是一种可以在任意位置插入和删除数据元素操作、由n(n≥0)个相同类型数据元素a0, a1,…, an-1组成的线性结构。除了第一个元素没有前驱元素和最后一个元素没有后继元素外,其他元素有且...
  • 满意答案 ooujfe 2014.02.08 采纳率:53% 等级:12 已帮助:40324人 #include "windows.h" #include "stdio.h" #include ... printf("\n删除相同数据后:"); PrintLink(head1); printf("\n"); return 0; } 00分享举报
  • 线性表删除第i个元素

    千次阅读 2021-05-17 01:40:14
    // 删除.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //群:970353786 #include <stdio.h> #include <malloc.h> #define Maxsize 100 typedef int ElemType;//定义别名 typedef ...
  • 数据结构-第2章 线性表.ppt
  • #include #include #define maxsize 100 #define false 0 #define true 1 typedef int ... printf("\n\n请输入您要删除的第i个k个数(i k):"); scanf("%d%d",&i,&k); delet(&a,i,k); out(&a); getch(); exit(0); }
  • 线性表)在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素。 输入 输入长度:6 输入数据:2 3 4 5 5 7 输出 2 3 4 5 7 样例...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 78,556
精华内容 31,422
关键字:

线性表删除元素