精华内容
下载资源
问答
  • 已知长度为n线性表A采用顺序存储结构,请写一个时间复杂度O(n)、空间复杂度O(1)的算法,该算法可删除线性表中所有值item的数据元素。

    C语言
    运行结果:
    在这里插入图片描述
    代码:

    #include <stdio.h>
    #include <stdlib.h>
    #define OK 1
    #define ERROR -1
    #define MAXSIZE 10
    typedef int Stauts;
    typedef int ElemType;
    typedef struct 
    {
    	ElemType *elem;
    	int length;
    	int listsize;
    }SqList;
    Stauts InitList(SqList &A)
    {
    	A.elem = (ElemType*)malloc(MAXSIZE*sizeof(ElemType));
    	if(!A.elem)  exit(ERROR);
    	A.length = 10;
    	A.listsize = MAXSIZE ;
    	return OK;
    }
    
    Stauts ListDelete(SqList &A,int item)
    {
    	int j=0,i;
    	while(j<A.length)
    	{
    		if(item == A.elem[j])
    		{
    				for(i = j; i < A.length; i++)
    				
    			A.elem[i] = A.elem[i+1];
    		A.length=A.length-1;
    		}
    				
    		j=j+1;
    	}
    	return OK;
    }
    int main()
    {
    	int i;
    	int item ;
    	SqList A;
    	if(InitList(A)) 
    		printf("构建成功\n");
    		printf("当前数据为\n");
    		for(i = 0;i < A.length;i++)
    		{
    			A.elem[i] = i;
    			printf("%6d",A.elem[i]);
    	}
    	printf("\n");
    	printf("请输入要删除的数值");
    	scanf("%d",&item);
    	ListDelete(A,item);
    	
    	printf("删除%d后的数据\n",item);
    	for (i = 0 ;i < A.length; i++)
    		printf("%6d",A.elem[i]);
    	printf("\n");
    	return 0;
    }
    
    展开全文
  • 已知长度为n线性表A采用顺序存储结构,请写尽可能高效的算法,删除线性表中所有值item的数据元素 直接上代码 void DeleteItem (Sqlist *L,int item) { int i=0,j=0,count=0; for(i=0;i<L->length;) ...

    已知长度为n的线性表A采用顺序存储结构,请写一尽可能高效的算法,删除线性表中所有值为item的数据元素

    直接上代码

    void DeleteItem (Sqlist *L,int item)
    {
       	int i=0,j=0,count=0;
    	for(i=0;i<L->length;)
        {
            if(L->elem[i] == item)
            {
                i++;//下一个节点下标
                count++;//数据为item的个数
            }
            else
            {
                L->elem[j] = L->elem[i];//j为需要插入元素的下标
                i++;
                j++;
            }
        }
        L->length -= count;//更改表长
    }
    
    
    展开全文
  • /** * @author:(LiberHome) * @date:Created in 2019/2/27 23:34 .../*已知长度为n线性表采用顺序结构,写算法删除该线性表中所有值item的元素*/ public class page06 { public static void mai...
    /**
     * @author:(LiberHome)
     * @date:Created in 2019/2/27 23:34
     * @description:
     * @version:$
     */
    /*已知长度为n的线性表采用顺序结构,写一算法删除该线性表中所有值为item的元素*/
    public class page06 {
        public static void main(String[] args) {
            String[] arr = {"item", "item", "Hello", "item", " sweet ", "item", "grief"};
            delItem(arr);
            show(arr);
        }
    
        private static void show(String[] arr) {
            for (int i = 0; i < arr.length; i++) {
                if (!"item".equals(arr[i])){
                    System.out.print(arr[i] + " ");
                }
            }
        }
    
        /*但凡是遇到一个item就拼命往后找不为item的值,直到找到并且与之交换,树立flag,或者超出界限退出*/
        /*然后输出元素到编号flag*/
        private static void delItem(String[] arrs) {
            String temp;
            int i = 0;
            while (i < arrs.length) {
                /*如果不为item*/
                while (!"item".equals(arrs[i]) && (i + 1) < arrs.length) {
                    i++;
                }
                /*超出界限就返回*/
                if ((i + 1) >= arrs.length) {
                    return;
                }
                /*走到这步说明在界限内遇到了item*/
                /*立一个flag*/
                int flag = i;
                while ("item".equals(arrs[i]) && (i + 1) < arrs.length) {
                    i++;
                }
                if ((i) >= arrs.length) {
                    return;
                }
                /*走到这一步说明已经找到了非item元素*/
                /*交换*/
                temp = arrs[i];
                arrs[i] = arrs[flag];
                arrs[flag] = temp;
                i = flag + 1;/*回到flag后一个元素,开始新的一轮*/
                flag++;
            }
        }
    }

     

    转载于:https://www.cnblogs.com/liberhome/p/10447921.html

    展开全文
  • *题目:已知长度为n线性表A采用顺序存储结构,请写一个时间复杂度o(n)、空间复杂度o(1)的算法, * 该算法可删除线性表中所有值item的数据元素。 *编译环境:VC 6.0 */ #include &lt;stdio.h&gt; #...
    /*数据结构与算法-第二章线性表课后习题
    *课本第53页2.10
    *题目:已知长度为n的线性表A采用顺序存储结构,请写一个时间复杂度为o(n)、空间复杂度为o(1)的算法,
    *     该算法可删除线性表中所有值为item的数据元素。
    *编译环境:VC 6.0
    */
    #include <stdio.h>
    #include <stdlib.h>
    #define ERROR -1
    #define MAXSIZE 5
    #define OVERFLOW -1
    #define OK 1
    #define listIncrement 2
    #define num_stop -1
    typedef int elemType;
    
    typedef struct
    {
    	elemType *elem;
    	int length;
    	int listsize;
    }Sqlist;
    int initList(Sqlist &list)
    {
    	list.elem=new int[MAXSIZE];
    	if(!list.elem)
    		exit(OVERFLOW);
    	list.length=0;
    	list.listsize=MAXSIZE;
    	return OK;
    }
    int ListInsert(Sqlist &list,int i,int num)
    {
    	int *newbase;
    	if(i<1)return ERROR;
    	if(list.length==list.listsize)//即将超越数组大小时重新动态分配数组大小
    	{
    		newbase=(int*)realloc(list.elem,(list.listsize+listIncrement)*sizeof(int));
    		if(!newbase)
    			exit(OVERFLOW);
    		list.elem=newbase;
    		list.listsize+=listIncrement;
    	}
    	list.elem[i-1]=num;
    	++list.length;
    	return OK;
    }
    void printList(Sqlist list)/*用于测试数据是否存储入顺序表*/
    {
    	for(int k=0;k<list.length;k++)
    		printf("%d ",list.elem[k]);
    }
    void deleteList(Sqlist &list,int num)
    {
    	int len=list.length;
    	elemType *str=list.elem;
    	int front=0;
    	while(front<len)
    	{
    		while(front<len && str[front]!=num)
    			front++;//值不为num时,指针右移,为从顺序表开头一直顺数到为num的元素
    		if(front<len)
    			while(front<len && str[len]==num)
    				len--;//为需要删除的数字时,线性表长度减1,为从顺序表尾部删除尾部连续的为num的元素
    		if(front<len)
    		{
    			str[front]=str[len-1];//题目仅要求删去值为num的元素,并未要求元素顺序排列不变,因此大胆猜想将靠后的元素往前移动
    			front++;//前指针右移
    			len--;//后指针左移
    			list.length--;//变换一次,顺序表长度-1
    		}
    	}
    }
    int main()
    {
    	Sqlist list1;
    	int flag;
    	int num,count=0;
    	flag=initList(list1);
    	printf("请输入若干数字,并以%d结束:",num_stop);
    	scanf("%d",&num);
    	count++;
    	while(num!=-1)
    	{
    		flag=ListInsert(list1,count,num);
    		scanf("%d",&num);
    		count++;
    	}
    	printList(list1);printf("\n");
    	printf("需要删除的数字为:");
    	scanf("%d",&num);
    	deleteList(list1,num);
    	printf("删除后的线性表为:");
    	printList(list1);
    	printf("\n");
    	return 0;
    }
    
    展开全文
  • 已知长度为n线性表A采用顺序储存结构,请写出一个时间复杂度O(n),空间复杂度O(1)的算法,该算法可删除线性表中的所有值item的数据元素。 源代码: #include <stdio.h> #include <stdlib.h> #...
  • 对于顺序存储长度为N线性表,访问结点和增加结点的时间复杂度: A.O(1), O(1) B.O(1), O(N) C.O(N), O(1) D.O(N), O(N) 答案:B 分析: 题目字眼 “ 顺序存储 ” ,说明内存单元分配的存储空间是连续的,所 ...
  • 顺序存储线性表实现

    千次阅读 多人点赞 2018-10-08 21:15:35
    计算机中用组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表顺序存储结构。   顺序存储结构的主要优点是节省存储空间,因为分配给数据的存储单元全用存放结点的数据(不考虑c/c++语言数组需...
  • 实现一个顺序存储线性表任务描述相关知识编程要求测试说明代码实现 任务描述 本关任务:实现 step1/Seqlist.cpp 的SL_InsAt、SL_DelAt和SL_DelValue三个操作函数,以实现线性表中数据的插入、删除与查找等功能。...
  • 顺序存储线性表的分析 性能分析 和 功能分析 顺序存储线性表的插入和删除操作存在重大效率隐患 效率分析 下面的O(n)是最坏情况下的 问题 长度相同的两SeqList,插入和删除操作的平均耗时是否相同? 顺序存储...
  • 为了方便描述过程,假定一个线性表结构体ArrayList typedef struct ArrayList{ int data[N]; int index;//初始值-1,代表里面没有元素,使用时代表下标。 }*List; 第一种方法:顺序双指针法 指针i控制向...
  • // 自定义了一个数据类型Elemtype,这里定义的Elemtype和int型是一样的 //定义 #define MAXSIZE 100 typedef struct//typedef是定义类型的意思, { ElemType *elem;//存储空间的基地址 ...
  • //C语言--数据结构--线性表 顺序表 线性表顺序存储结构 //其实顺序表就相当于一个数组 #include #include #include #include #include using namespace std; #define MAXSIZE 10//定义顺序表的长度 ...
  • 数据结构实战开发类继承关系图...顺序存储的定义:线性表顺序存储结构,指的是用段地址连续的存储单元依次存储线性表中的数据元素。 List实现 既然是线性表,那么首先需要线性表抽象类List,主要是...
  • 数据结构——浅谈顺序存储线性表 一、线性表 线性表可以说是最常用最简单的一种数据结构,自然掌握线性表是数据结构最重要的一环了。 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素...
  • 线性表顺序存储结构

    2019-04-22 18:59:23
    线性表顺序存储结构,指的是用段地址连续的存储单元依次存储线性表的数据元素 顺序存储结构需要的三属性 存储空间的起始位置:数组data,它的存储位置就是存储空间的位置 线性表最大存储容量:数组长度...
  • 任务描述 本关任务:实现 step1/Seqlist.cpp 的SL_InsAt、SL_DelAt和SL_DelValue三操作函数,以实现线性表中数据的插入、删除与查找等功能。...下面给出了种基于顺序存储线性表实现方案: 该方案将...
  • 线性表顺序存储

    2021-03-02 10:32:43
    非空的线性表,有且仅有一个开始节点,它没有直接前趋,而仅有一个直接后继。 有且仅有一个终端节点,它没有直接后继,而仅有一个直接前趋。 其余的内部节点都有且仅有一个直接前趋和一个直接后继。 .线性表顺序...
  • 1,本文实现一个线性表; 2,顺序存储定义: ... 2, C++ 可以用一个数组作为介质来存储数据元素; 3,设计思路: 1,可以用一维数组实现顺序存储结构:  1,存储空间:T* m_array;  2,当前...
  • 线性表顺序存储

    千次阅读 2019-05-03 23:46:34
    线性表顺序存储结构:用段地址连续的存储单元依次存储线性表的数据元素。 线性表的元素类型相同,用段连续的地址存储,可以使用数组来存储实现线性表顺序存储线性表的存储结构代码如下。 class ...
  • 顺序存储结构线性表

    2019-10-30 20:54:25
    线性表顺序存储结构,存、读数据时,不管是哪个位置,时间复杂度都是O(1); 而插入或删除时,时间复杂度都是O(n)。 线性表顺序存储结构优缺点 优点 无须表示表元素之间的逻辑关系而增加额外的存储...
  • 顺序线性表

    千次阅读 2018-10-03 22:53:37
    该操作是指在线性表的第i-1个位置与线性表的第i个位置插入一个新的数据元素,使得线性表长度变为n+1,但是进行插入时首先应该判断线性表是否已满或者存储空间已被占满,并且还需要测试插入的位置是否恰当,由此...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,821
精华内容 12,728
关键字:

在一个长度为n的顺序存储线性表中