-
2021-05-23 11:54:09
《有两个集合用两个线性表LA和LB表示即线性表中的数据元素即为集合中的成员现要求一个新的集合》由会员分享,可在线阅读,更多相关《有两个集合用两个线性表LA和LB表示即线性表中的数据元素即为集合中的成员现要求一个新的集合(5页珍藏版)》请在人人文库网上搜索。
1、例2-1 假设有两个集合A和B分别用两个线性表LA和LB表示,即:线性表中的数据元素即为集合中的成员。现要求一个新的集合AAB。/上述问题可演绎为:要求对线性表作如下操作:扩大线性表LA,将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中去。/操作步骤:1从线性表LB中依次察看每个数据元素;GetElem(LB,i)e2依值在线性表LA中进行查访;LocateElem(LA,e,equal( )3若不存在,则插入之。ListInsert(LA,n+1,e)/void union(List &La,List Lb)La_len=ListLength(La);/求线性表的长度L。
2、b_len=ListLength(Lb);for(i=1;i#include #include List.hStatus InitList(List &L)/构造一个空的线性表L。L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!L.elem) exit(OVERFLOW);L.length=0;L.listsize=LIST_INIT_SIZE;return OK;/InitListvoid CreateList(List &L, int a,int n)/顺序输入n个数据元素,建立顺序表int i;for(i=0;iL。
3、.length+1) return ERROR;/i值不合法if(L.length=L.listsize) /当前存储空间已满,增加分配newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase) exit(OVERFLOW);/存储分配失败L.elem=newbase;/新基址L.listsize+=LISTINCREMENT;/增加存储容量 q=&(L.elemi-1);/q为插入位置for(p=&(L.elemL.length-1);p=q;-p) *(p+1)=*p;。
4、 /插入位置及之后的元素右移*q=e;/插入e+L.length;/表长增1return OK; / ListInsert void PrintList(List L)/ 输出顺序表Lint i;printf(n);for(i=1;i#include #include List.hint a=3,5,8,11;int b=2,6,8,9,11,15,20;Status equal(ElemType,ElemType);void Union(List &,List);Status equal(ElemType x,ElemType y)return x=y;void Union(List &La。
5、,List Lb)/ 将所有在线性表Lb中但不在La中的数据元素插入到La中int i;int e;int La_len,Lb_len;La_len=ListLength(La);Lb_len=ListLength(Lb);for(i=1;i=Lb_len;i+)GetElem(Lb,i,e);if(!LocateElem(La,e,equal)ListInsert(La,+La_len,e);/Unionint main()List La,Lb;InitList(La);InitList(Lb);CreateList(La,a,4);CreateList(Lb,b,7);printf(集合A:);PrintList(La);printf(集合B:);PrintList(Lb);Union(La,Lb);printf(集合A U B:);PrintList(La);printf(A与B的并集对吗?);getchar();return 0;。
更多相关内容 -
线性表元素的区间删除
2021-01-07 11:59:37统计剩余的,然后用在循环中扶正位置... / 保存线性表中最后一个元素的位置 */ }; List ReadInput(); /* 裁判实现,细节不表。元素从下标0开始存储 / void PrintList( List L ); / 裁判实现,细节不表 */ List Delet -
线性表查找第i个元素
2021-05-17 01:32:24// 删除.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //群:970353786 #include <stdio.h> #include <malloc.h>...#define Maxsize 100 ...//初始化线性表 void Initlist(Sql// 删除.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //群:970353786 #include <stdio.h> #include <malloc.h> #define Maxsize 100 typedef int ElemType;//定义别名 typedef struct Sqlist { ElemType data[Maxsize]; int len;//当前长度 }; //初始化线性表 void Initlist(Sqlist& sq) { sq.len = 0; } //求线性表长度 int ListLength(Sqlist sq) { return(sq.len); } //删除第i个元素 int ListDelete(Sqlist& sq, int i) { int j; if (i<1 || i>sq.len) return 0;//i不合法 for (j = i; j < sq.len; j++) { sq.data[j - 1] = sq.data[j];//删除元素后,第i个后面的全部元素全部左移 } sq.len--;//表长就减1 return 0; } int main() { Sqlist sqa; int i, j, n, m, s; int num; printf_s("请输入你要输入多少个数据:"); scanf_s("%d", &num); for (i = 1; i <= num; i++) { printf_s("请输入链表第 % d个数据:", i); scanf_s("%d", &sqa.data[i]); } sqa.len = num; printf_s("删除第几个元素?\n"); scanf_s("%d", &n); if (n > sqa.len) { printf_s("已经超出范围,无法删除\n"); } else { ListDelete(sqa, n); printf_s("删除的数据为:%d\t", sqa.data[n]); printf_s("由于删除一个元素,长度变为:%d\n", ListLength(sqa)); //printf("%d", sqa.len);//也可以直接打印长度不调用函数 } } // 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 // 调试程序: F5 或调试 >“开始调试”菜单
-
线性表的基本操作,插入删除,输出线性表内容,输出两个线性表的相同元素
2013-09-24 21:43:28线性表的基本操作,插入删除,输出线性表内容,输出两个线性表的相同元素,判空,判满,查找指定位置元素,查找指定元素位置,线性表的初始化 -
已知线性表按顺序存于内存,每个元素都是整数,试设计把所有值为负数的元素移到全部正数值元素前边的算法 ....
2019-10-23 19:08:11已知线性表按顺序存于内存,每个元素都是整数,把所有值为负数的元素移到全部正数值元素前边的算法 -
数据结构之删除线性表同一个元素
2020-03-28 23:34:50删除线性表中同一个元素z 方法一:重建法 从左向右遍历线性表,找到不是z的元素,把这些元素放到新的线性表中;新的线性表可以以原线性表为基础建立。 void delnode(Sqlist *&l,Elem type z) { int i,k=0; //k...删除线性表中同一个元素z
方法一:重建法
从左向右遍历线性表,找到不是z的元素,把这些元素放到新的线性表中;新的线性表可以以原线性表为基础建立。void delnode(Sqlist *&l,Elem type z) { int i,k=0; //k记录不等于元素z的个数 for(i=0;i<l->length;i++) if(l->date[i]!=z)//若元素不等于z时,把元素插入到新l中 { l->date[k]=l->date[i]; k++;//插入一个元素k加一 } l->length=k;//线性表的长度为k }
方法二:迁移法
从左遍历线性表,找到元素z并用k来记录它的个数,用z后面的元素迁移到z的位置取代它。void delnode(sqlist*&l,Elem type z) { int k=0,i;//k来记录元素为z的个数 for(i=0;i<l->length;i++) { if(l->date[i]==z)//若元素等于z则k加一 k++; else l->date[i-k]=l->date[i];//若元素不等于z是,使元素前移k } }
-
一个线性表采用顺序表表示,设计一个算法,删除其中所有值等于X的元素完整的C语言程序
2021-05-23 12:09:48#include#include#defineElemTypeint#defineStatusint#defineOVERFLOW-1#defineERROR0#defineOK1/*线性表的动态分配顺序存储结构*/#defineLIST_INIT_SIZE10/*线性表存储空间的初始分配量*/#defineLIST_INCREMENT2/*...#include
#include
#define ElemType int
#define Status int
#define OVERFLOW -1
#define ERROR 0
#define OK 1
/* 线性表的动态分配顺序存储结构 */
#define LIST_INIT_SIZE 10 /* 线性表存储空间的初始分配量 */
#define LIST_INCREMENT 2 /* 线性表存储空间的分配增量 */
typedef struct {
ElemType *elem; /* 存储空间基址 */
int length; /* 当前长度 */
int listsize; /* 当前分配的存储容量(以sizeof(ElemType)为单位) */
} SqList;
/* 操作结果:构造一个空的顺序线性表L */
void InitList(SqList *L) {
L->elem=malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem)
exit(OVERFLOW); /* 存储分配失败 */
L->length=0; /* 空表长度为0 */
L->listsize=LIST_INIT_SIZE; /* 初始存储容量 */
}
/* 初始条件:顺序线性表L已存在。操作结果:销毁顺序线性表L */
void DestroyList(SqList *L) {
free(L->elem);
L->elem=NULL;
L->length=0;
L->listsize=0;
}
/* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1 */
/* 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1 */
Status ListInsert(SqList *L,int i,ElemType e) {
ElemType *newbase,*q,*p;
if(i<1||i>L->length+1) /* i值不合法 */
return ERROR;
if(L->length>=L->listsize) { /* 当前存储空间已满,增加分配 */
newbase=realloc(L->elem,(L->listsize+LIST_INCREMENT)*sizeof(ElemType));
if(!newbase)
exit(OVERFLOW); /* 存储分配失败 */
L->elem=newbase; /* 新基址 */
L->listsize+=LIST_INCREMENT; /* 增加存储容量 */
}
q=L->elem+i-1; /* q为插入位置 */
for(p=L->elem+L->length-1;p>=q;--p) /* 插入位置及之后的元素右移 */
*(p+1)=*p;
*q=e; /* 插入e */
++L->length; /* 表长增1 */
return OK;
}
/* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L) */
/* 操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1 */
Status ListDelete(SqList *L,int i,ElemType *e) {
ElemType *p,*q;
if(i<1||i>L->length) /* i值不合法 */
return ERROR;
p=L->elem+i-1; /* p为被删除元素的位置 */
*e=*p; /* 被删除元素的值赋给e */
q=L->elem+L->length-1; /* 表尾元素的位置 */
for(++p;p<=q;++p) /* 被删除元素之后的元素左移 */
*(p-1)=*p;
L->length--; /* 表长减1 */
return OK;
}
/* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L) */
/* 操作结果:打印顺序线性表所有元素 */
void OutputList(SqList *L) {
ElemType *p;
int i;
p=L->elem; /* p的初值为第1个元素的存储位置 */
for (i=1; i<=L->length; i++, p++)
printf ("%d\t", *p);
putchar ('\n');
}
int main () {
SqList L; /*定义顺序表*/
ElemType *p,e;
int i;
ElemType X=5; /*程序欲删除元素值为X的元素*/
InitList (&L); /*初始化顺序表*/
/*插入若干元素*/
ListInsert (&L,1,1);
ListInsert (&L,1,2);
ListInsert (&L,3,5);
ListInsert (&L,4,3);
ListInsert (&L,5,5);
ListInsert (&L,6,4);
printf ("初始顺序线性表内容为:\n");
OutputList (&L);
putchar ('\n');
/*删除元素值为x的元素*/
p=L.elem; /* p的初值为第1个元素的存储位置 */
for (i=1; i<=L.length; i++, p++) {
if (*p == X) {
ListDelete (&L,i,&e);
printf ("第%d个元素,其值为%d,已删除!\n", i, e);
}
}
putchar ('\n');
printf ("删除元素值为x的元素之后顺序线性表内容为:\n");
OutputList (&L);
putchar ('\n');
getch ();
return 0;
}
运行结果
温馨提示:答案为网友推荐,仅供参考
-
线性表删除第i个元素
2021-05-17 01:40:14// 删除.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //群:970353786 #include <stdio.h> #include <malloc.h>...#define Maxsize 100 ...//初始化线性表 void Initlist(Sql -
线性表的若干操作
2019-03-26 13:07:56数据结构中的线性表的若干操作,1、建立一个顺序方式存储的线性表向表中输入若干元素后进行以下操作 1向线性表的表头、表尾或合适位置插入元素 2对线性表按升序或降序输出 2、建立一个动态链接... -
线性表从第i个元素插入
2021-05-17 01:35:00// 链表2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //群:970353786 #include <stdio.h> #include <malloc.h>...//初始化线性表 void Initlist(Sqlist& sq) { -
试写一高效的算法,删除表中所有值相同的多余元素(使得操作后的线性表中所有元素的值均不相同)
2018-11-24 21:27:24包含一个函数,参数为链表表头地址,返回经过处理的新的链表表头地址。该函数将一个按照升序排列的链表中的重复元素删除,时间复杂度为(n) -
删除线性表相同元素
2015-11-26 17:36:53删除线性表相同元素的代码,以运行 -
线性表插入元素
2018-08-13 08:51:14线性表的顺序存储中,有态存储,请用动态存储形式实现线性表的创建和插入某个元素,并显示输出结果 输入 输入包括:首先输入线性表元素的个人,然后输入相应的元素,输入插入的位置以及元素 输出 输出插入相应... -
线性表删除元素
2019-09-27 07:40:38线性表删除元素 在线性表中删除指定元素: 1 class deleelem_in_linelist(): 2 def __init__(self,list,maxsize): 3 self.data = list 4 ... -
假设有两个集合A和B分别用两个线性表LA和LB表示,即.ppt
2021-05-23 11:53:06循环链表最后一个结点的link指针不为 0 (NULL),而是指向了表的前端。 为简化操作,在循环链表中往往加入表头结点。 循环链表的特点是:只要知道表中某一结点的地址,就可搜寻到所有其他结点的地址。 循环链表的... -
数据结构之线性表的基本操作,用菜单实现(创建线性表,查找元素位置,按位置查找元素,插入一个元素,删除...
2020-03-16 14:18:35case '4': printf("插入一个元素操作.\n"); int k; printf("请输入要插入的元素和位置:"); scanf("%d%d",&x,&k); if(InsertLinkList(H,k,x)) printf("插入成功!\n"); else ... -
194(将一个整数线性表拆分成奇数和偶数线性表)
2013-03-08 20:21:24将一个整数线性表拆分成奇数和偶数线性表,课后习题,完整好用 -
往递增的线性表中插入一个元素使之插入后的线性表还是递增的
2019-06-08 12:14:25先要对线性表进行初始化,使用一个for循环即可,然后查找出线性表中第一个比当前要插入的元素大的位置,然后将元素插入到前面就可以了 具体的代码如下: #include <iostream> #define maxSize 11 using ... -
一个递增有序的线性表L中插入一个值为x的元素,并保持其递增有序特性
2020-04-14 20:47:50//在一个递增有序的线性表L中插入一个值为x的元素,并保持其递增有序特性 bool listInsert(node* L, elementType x) { node* p = L->next; node* s = new node;// 创建一个新节点 s->data = x;//装入数据 ... -
关于线性表空表指向表的最后一个元素位置的Last指针的值的思考
2021-04-19 19:52:23学习结果: 线性表的空表的指针问题 学习内容: 理解了线性表空表Last指针指向-1的问题 学习时间: ... / 保存线性表中最后一个元素的位置 */ }; 建立一个空表并返回 List MakeEmpty(){ List L; L = -
用链式存储结构建立十个元素(元素的值为正整数,元素的值用scanf函数输入)的线性表,输出线性表的所有...
2021-05-30 19:47:25用链式存储结构建立十个元素(元素的值为正整数,元素的值用scanf函数输入)的线性表,输出线性表的所有元素。然后删除第四个元素,再输出该线性表的所有元素。 -
两个线性表合并为一算法实现
2020-10-09 20:58:26LA和LB是两个int型数组,将他们合并为一个数组LC (课本P20算法2.1) #include<stdio.h> #define len_LA 4 #define len_LB 7 //函数-获取元素 int getElem(int *list,int index) { return list[index-1];... -
【8559】设有一个线性表存放在一个一维数组中的前n个数组元素位置。请编写一个顺序表的程序,将这个线性表...
2019-09-24 23:47:04设有一个线性表存放在一个一维数组中的前n个数组元素位置。请编写一个顺序表的程序,将这个线性表原地逆置 输入 6 3 2 1 5 3 4 输出 3 2 1 6 3 4 4 3 6 1 2 3 #include<bits/stdc++.h> using namespace std;... -
数据结构实现一个顺序储存的线性表
2021-07-11 14:44:45组织成为一个结构: data: 给出线性表存储空间的起始地址; max: 指明线性表存储空间最多可存储的数据元素个数; len: 当前线性表里的数据元素个数。 为了讨论简化,我们假设每个数据元素是一. -
线性表是由n(n≥0)个相同类型数据元素组成的有限序列
2022-03-01 00:00:55线性表是由n(n≥0)个相同类型数据元素组成的有限序列。当n=0时为空表,记为()或Φ;当n>0时,线性表的逻辑表示为(al,a2,…,ai,...线性表的逻辑特征是:若至少含有一个元素,则只有唯一的开始元素和终端元素, -
实现一个顺序存储的线性表(数据结构与算法 - 线性表)
2020-04-23 19:10:22任务描述 本关任务:实现 step1/Seqlist.cpp ...线性表结构中,数据元素之间通过一对一首尾相接的方式连接起来。具体实现时,线性表可以采用不同的存储策略。下面给出了一种基于顺序存储的线性表实现方案: 该方案将... -
实现一个链式存储的线性表
2020-11-05 16:15:58实现一个链式存储的线性表任务描述相关知识编程要求测试说明代码实现 任务描述 本关任务:完成一个链接存储的线性表的小程序。 相关知识 线性表的存储也可以采用链接存储方式来实现。链接存储方式包括单链表、双链表... -
线性表元素的区间删除(一步步带你思考解答)
2021-05-14 23:15:33给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: List Delete( List L, ElementType minD, ElementType ... -
2.2实现一个链接存储的线性表(educoder数据结构线性表实训题)
2021-07-26 23:20:55任务描述 本关任务:完成一个链接存储的线性表的小程序。 相关知识 线性表的存储也可以采用链接存储方式来实现。链接存储方式包括单链表、双链表和循环链表等...如上面的单链表示意图所示,一个链表主要有front、