数据结构中怎样把一个顺序表中的元素给另外一个空表

作者&投稿:晏咐 (若有异议请与网页底部的电邮联系)
数据结构顺序表中 建立空表和初始化有什么不同~

初始化就是建立一个空线性表,那直接把长度置为0就行了。
1 /* 初始化顺序线性表 */
2 Status InitList(SqList *L)
3 {
4 L->length=0;
5 return OK;
6 }
因为要初始化,要对线性表本身进行操作,所以不能用值传递。值传递不会改变实参的值嘛。地址传递的话呢,实际上在函数内部执行了这么一个操作:L = &L. 所以操作函数内部的L,也就相当于操作外部的线性表L。其实地址传递也是值传递。不过这个值是地址而已。
就是说,需要修改表的就传指针,不需要修改表的传值就行了。那补上一个完整的可运行的程序。
01 #include "stdio.h"
02
03 #define OK 1
04 #define ERROR 0
05 #define TRUE 1
06 #define FALSE 0
07
08 #define MAXSIZE 20 /* 存储空间初始分配量 */
09 typedef int ElemType; /* ElemType类型根据实际情况而定,这里假设为int */
10 typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
11
12 typedef struct
13 {
14 ElemType data[MAXSIZE]; /* 数组,存储数据元素 */
15 int length; /* 线性表当前长度 */
16 }SqList;
17
18 /* 初始化顺序线性表 */
19 Status InitList(SqList *L)
20 {
21 L->length=0;
22 return OK;
23 }
24
25 int main()
26 {
27 SqList L;
28 ElemType e;
29 Status i;
30
31 i=InitList(&L);
32 printf("初始化L后:L.length=%d
",L.length);
33 }
程序运行结果:
1 初始化L后:L.length=0
2
3 Process returned 22 (0x16) execution time : 0.072 s
4 Press any key to continue.
有个问题,在函数内部 L->length=0; 使用箭头,而在外面调用的时候 L.length 却用实心点,两者有啥区别吗?
这个很基础嘛。。。在函数内部,传递的参数是 *L,那么L就是指针。指针需要用->指向成员。而在外部的L是实体对象,实体对象则用实心点来指向成员嘛。
OK,线性表的初始化就这么简单。

SeqList *Init_SeqList(){//函数返回初始化后的顺序表结构指针,没有传入参数
SeqList *L;//定义顺序表结构指针
L=(SeqList *)malloc(sizeof(SeqList));//申请头顺序表,为它在堆中分配内存
L->last = -1;//last指向顺序表中最后一个元素的位置,从0开始;这里-1表示顺序表当前没有内容
return L;//返回顺序表结构指针
}
Main(){
SeqList *L;//定义顺序表结构指针,用来保存顺序表结构
L=Init_SeqList();//调用函数得到顺序表指针
……
}

思路是这样的,先预分配一个顺序空表,如果执行过程中,分配空间不够,再行分配。
然后定义一个变量a,并且将非空顺序表L1表长赋值给该变量。
用一个for循环,循环条件是(i=1;i<=a;i++)
循环体是GetElem(L1,i,e)//将下标为i的元素赋值给e
ListInsert(L2,i,e)//将e的值放入L2的i处
循环完毕即可。

思路是这样的,先预分配一个顺序空表,如果执行过程中,分配空间不够,再行分配。
然后定义一个变量a,并且将非空顺序表L1表长赋值给该变量。
用一个for循环,循环条件是(i=1;i<=a;i++)
循环体是GetElem(L1,i,e)//将下标为i的元素赋值给e
ListInsert(L2,i,e)//将e的值放入L2的i处
循环完毕即可。


阅读下面短文,按照句子结构的语法性和上下文连贯的要求,在空格处填入...
小题1:watching小题2:applications小题3:to give小题4:is considering小题5:an小题6:herself 小题7:where小题8:it小题9:Though\/Although\/While小题10:for 试题分析:本文叙述了通常情况在高考完之后,考生该放松了,该在家睡觉,吃饭,看电视,开始放松自己,而有一些考生恰恰相反,他们时刻不放...

举一个文言文中有官名人命的划分句子节奏的例子
…听到”、“受到”这三个,而相对于文言句子中的动词就是“谤讥”、“闻”、“受”三个,介词结构“于市朝”作“谤讥”的宾语,“寡人之耳者”作“闻”的宾语,“下赏”作“受”的宾语,这样的话,“能谤讥于市朝”就是一个动宾结构,“闻寡人之耳者”是一个动宾结构,“受下赏”也是一个...

如此图赛程表,怎样用word快速制作?
1、打开软件后,点击界面上方的【插入】。2、再点击下方工具栏中的【SmartArt】。3、在弹出的界面中点击【层次结构】。4、选择其中一个形式,可以根据需要选择。5、在原点后面可以输入文字。6、最后的完成效果如下,可以在当前的图像下按上面步骤再添加几个,可以输入更多信息。

编导影评结构问题。
疑问句式的标题,则欲说还休,将作者观点藏在文章内引动读者探究。选择句式的标题,则把判断的权利交给观众,和观众一起来分析、认识。带有比喻的形象的标题,则给观者以深刻的印象,过目不忘。有个好开头。好的开头也相当重要,它一是影响到意思的表达,是结构安排的重要一环,二是吸引读者看下去的...

电脑怎样通过互联网传输数据
一个最基本的网络拓扑结构: 如果中间要经过交换机的话,根据交换机的原理,它是直接将数据发送到相应端口,那么就必须保有一个数据库,包含所有端口所连网卡的MAC地址。它通过分析Ethernet包的包头信息(其中包含不原MAC地址,目标MAC地址,信息的长度等信息),取得目标B的MAC地址后,查找交换机中存储的地址对照表,(MAC地址...

在消费者市场或工业市场中选出任何一种产品,根据渠道结构的以下三...
因素主要有两个:1、营销目标,对比一下日本和欧洲企业,日本企业非常注重市场份额,那么他们的渠道结构必然密度大类型多样,而欧洲企业的产品追求高附加值和利润率,所以他们的渠道并不追求高密度,因为密度过高会使产品价格降低,所以营销目标会影响渠道设计,你的产品价值定位高,渠道密度就会较小,如果产品定位中低档,密度就会...

说明文的说明方法及其作用,
例句:赵州桥非常雄伟,全长50.82米,两端宽9.6米,中部略窄,宽9米。和全桥只有一个大拱,长达37.4米...——《中国石拱桥》(体现准确性)五、分类别——条理、层次清晰,直观明了 说明事物的特征,往往从单方面不易说清楚,可以根据形状、性质、成因、功用等属性的异同,把事物分成若干类,...

高二化学原子结构与元素的性质中,根据洪特规则,其碳原子中的电子总是...
C元素是6号元素,核外共有6个电子,电子排布式为:1s2 2s2 2p2 2p轨道共有3条轨道,2px2py2pz,如果是1个电子,先填2px1,2个电子,再填2py1,洪特原则就是分占不同的轨道,还需自旋方向相同,碳原子电子排布式为1s 22s22 px12 py 12pz ...

怎样画好结构素描?
如果说这个形找不准的话可以先把静物的外轮廓画出来,然后再去找这种内部结构,通过内部结构与外轮廓的关系对比同学们就会发现其中的关联,如果以后遇到形体把握不好的问题就可以用这样的方式去纠正。①第一个问题是有同学会问,画完结构素描之后,我再画普通的素描静物要不要先把结构画出来再去画。首先...

区块链如何获得新区块,区块链之新
区块链技术中的区块是什么?区块就是很多交易数据的集合,它被标记上时间戳和之前一个区块的独特标记。有效的区块获得全网络的共识认可以后会被追加到主区块链中。区块链是有包含交易信息的区块从后向前有序链接起来的数据结构。区块链由一串使用密码学算法产生的区块连接而成。每一个区块上写满了交易记录...

屯留县18083805997: 数据结构中怎样把一个顺序表中的元素给另外一个空表 -
袁睿骨松: 思路是这样的,先预分配一个顺序空表,如果执行过程中,分配空间不够,再行分配. 然后定义一个变量a,并且将非空顺序表L1表长赋值给该变量. 用一个for循环,循环条件是(i=1;i<=a;i++) 循环体是GetElem(L1,i,e)//将下标为i的元素赋值给eListInsert(L2,i,e)//将e的值放入L2的i处 循环完毕即可.

屯留县18083805997: 数据结构中在顺序列表中如何找到一个元素存储位置 -
袁睿骨松: 顺序列表中 元素的 存储位置是和下标对应的. 首先你应该知道元素的值,通过循序,找到元素,同时记录下标,就可以了

屯留县18083805997: 数据结构:设计一个高效算法,将顺序表中的所有元素逆置,要求算法空间复杂度为O(1). -
袁睿骨松: for(int i = 0; i < array.length / 2; i++) {swap(array[i], array[array.length - i - 1]) } 只有swap函数需要一个字节的内存,所以空间复杂度O(1)

屯留县18083805997: 基于C语言的数据结构,怎样做顺序表插入 -
袁睿骨松: 1、顺序表的插入,常用方法就是从插入点后平移数据. 2、例如: void InsertSeqList(SeqList L, DataType x, int i) { //将元素x插入到顺序表L的第i个数据元素之前if(L.length==Maxsize) exit("表已满");if(i<1||i>L.length+1) exit("位置错"...

屯留县18083805997: 大学数据结构题目,递增顺序表插入元素 -
袁睿骨松:下面的程序先构造一个顺序表,输入n个元素.然后输入要插入的元素,插入完成后,该表仍然保持有序. #include #include #include#define LIST_INIT_SIZE 100struct list {int *data;int listsize;int listlength; };int create_list(struct list...

屯留县18083805997: 数据结构顺序表删除 -
袁睿骨松: Status ListDelete_Sq(SqList &L,int i,int &e){ // 在顺序线性表L中删除第i个元素,并用e返回其值 //判断i是否合法 if(i<1||i>L.length+1)return ERROR; int *p=&(L.elem[i-1]);//p被删元素的位置 e=*p;//被删元素赋值给e int *q=L.elem+L.length-1;//表尾...

屯留县18083805997: (1)在顺序表中插入或删除一个元素,需要平均移动_____元素,具体移动的元素个数与_____有关.(2)顺序表中逻辑上相邻的元素的物理位置_______紧邻.... -
袁睿骨松:[答案] (1)在顺序表中插入或删除一个元素,需要平均移动_ 约表长一半的____元素,具体移动的元素个数与_该元素在线性表中的位置____有关. (2)顺序表中逻辑上相邻的元素的物理位置__必须_____紧邻.单链表中逻辑上相邻的元素的物理位置__不必_...

屯留县18083805997: 设顺序表L中的元素递增有序.试写一算法,将数据元素x插入到顺序表L的适当位置,以保持该表的有序性. -
袁睿骨松: 原发布者:chenjianqi05将近半年时间内一直没有写博客了,最近一直研究数据结构.该是整理一下的时候了.采用的是严蔚敏的习题集.2.11设顺序表va中的数据元素递增有序.试写一算法,将x插入到顺序表的适当位置上,以保持该表的有...

屯留县18083805997: 【数据结构】写一个算法 1.顺序存储线性表中的元素 按值非递减有序排列 将元素e插入到顺序表中使之 -
袁睿骨松: struct LinkNode //链表的节点类 { int data; LinkNode *link; LinkNode(int a) :data(a), link(nullptr){ } LinkNode() :link(nullptr){ } };LinkNode *create(){ //通过键盘输入创建有序链表(从小到大) int elem; LinkNode * head = nullptr; std::cin.clear(); std::...

屯留县18083805997: 数据结构题索引顺序表上的查找分两个阶段:(1 )是——(2)是——设表中的元素的初始状态是按键值递增的,分别用堆排序、快速排序、冒泡排序、和归并... -
袁睿骨松:[答案] 1 .确定待查元素所在的块;在块内查找待查的元素 2 .对冒泡排序来讲,由于算法中设置了一个标志flag,用于记载一趟排序中是否出现了记录交换,以便判断当前排序区域是否已自然有序.因此本题中用冒泡排序最省时间. 当初始时记录已按键...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网