线性表的减法

2024-06-02 21:48
文章标签 线性表 减法

本文主要是介绍线性表的减法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>#define ERROR 0
#define OK 1
#define TURE 1
#define FAULE -1#define Max_size 100
#define ElemType int//结构体定义
typedef struct {ElemType elem[Max_size];ElemType last;
} Seqlist;//函数声明
int menu_select();
int Add_A_List(Seqlist *);
int Del_A_List(Seqlist *);
int Add_B_List(Seqlist *);
int Del_B_List(Seqlist *);
int Auto_Del_List(Seqlist *, Seqlist *);
int printA(Seqlist *);
int printB(Seqlist);// main()函数
int main() {Seqlist ListA, ListB;ListA.last = -1; //注意应提前赋值ListB.last = -1;for (;;) {switch (menu_select()) {case 1:printf("增加线性表A中的元素\n");Add_A_List(&ListA);break;case 2:printf("删除线性表A中的元素\n");Del_A_List(&ListA);break;case 3:printf("增加线性表B中的元素\n");Add_B_List(&ListB);break;case 4:printf("删除线性表B中的元素\n");Del_B_List(&ListB);break;case 5:printf("计算机自动删除A中存在B中的元素\n");Auto_Del_List(&ListA, &ListB);break;case 6:printf("显示出A中的元素\n");printA(&ListA);break;case 7:printf("显示出B中的元素\n");printB(ListB);break;case 0:printf("欢迎下次使用\n");return 0;}}
} // main()函数结束//菜单驱动程序
int menu_select() {int sn;printf("===============================\n");printf("1、增加线性表A中的元素\n");printf("2、删除线性表A中的元素\n");printf("3、增加线性表B中的元素\n");printf("4、删除线性表B中的元素\n");printf("5、计算机自动删除A中存在B中的元素\n");printf("6、显示出A中的元素\n");printf("7、显示出B中的元素\n");printf("0、退出程序\n");printf("=================================\n");printf("输入0--7\n");for (;;) {scanf("%d", &sn);getchar();if (sn < 0 || sn > 7)printf("\n 输入错误,重新选择 0--7S: ");elsebreak;}return sn;
}
//增加线性表A中的元素
int Add_A_List(Seqlist *ListA) {char flag = 'Y';while (flag == 'y' || flag == 'Y') {if (ListA->last >= Max_size - 1) {printf("线性表A空间已满!\n\n");return ERROR;} elseListA->last++;printf("需要加入的数字为:\n");scanf("%d", &ListA->elem[ListA->last]);printf("\n");printf("继续输入吗?(y/n)");getchar();scanf("%c", &flag);printf("\n");}return OK;
}
//增加线性表B中的元素
int Add_B_List(Seqlist *ListB) {char flag = 'Y';while (flag == 'y' || flag == 'Y') {if (ListB->last >= Max_size - 1) {printf("线性表B空间已满!\n\n");return ERROR;} elseListB->last++;printf("需要加入的数字为:\n");scanf("%d", &ListB->elem[ListB->last]);printf("\n");printf("继续输入吗?(y/n)");getchar();scanf("%c", &flag);printf("\n");}return OK;
}
//删除线性表A中的元素
int Del_A_List(Seqlist *ListA) {int i = 0, n;char flag = 'Y';if (ListA->last == -1) {printf("线性表为空!\n\n");return FAULE;} else {printf("请输入你要删除的元素\n");scanf("%d", &n);while (n != ListA->elem[i] && i <= ListA->last)i++;if (i <= ListA->last) {printf("要删除的数字为%d\n", ListA->elem[i]);printf("你确定要删除这个通讯者的信息吗?(y/n) ");getchar();scanf("%c", &flag);if (flag == 'y' || flag == 'Y')for (i = i + 1; i <= ListA->last; i++)ListA->elem[i - 1] = ListA->elem[i];ListA->last--;return OK;} else {printf("元素不存在!\n\n");return FAULE;}}}
//删除线性表B中的元素
int Del_B_List(Seqlist *ListB) {int i, n;char flag;if (ListB->last == -1) {printf("线性表为空!\n\n");return FAULE;} else {printf("请输入你要删除的元素\n");scanf("%d", &n);while (n != ListB->elem[i] && i <= ListB->last)i++;if (i <= ListB->last) {printf("要删除的数字为%d\n", ListB->elem[i]);printf("你确定要删除这个通讯者的信息吗?(y/n) ");getchar();scanf("%c", &flag);if (flag == 'y' || flag == 'Y')for (i = n + 1; i <= ListB->last; i++)ListB->elem[i - 1] = ListB->elem[i];ListB->last--;return OK;} else {printf("元素不存在!\n\n");return FAULE;}}
}
//计算机自动删除A中存在B中的元素
/*TODO:性表B中的每个元素看它是否在线性表A中,若在,则将线性表A中的元素删除。!注意:禁止在验证时使用输出函数显示*/
int Auto_Del_List(Seqlist *ListA, Seqlist *ListB) {//TODO:}
//打印
int printA(Seqlist *ListA) {int i;if (ListA->last == -1) {printf("线性表A为空\n");return ERROR;}for (i = 0; i <= ListA->last; i++) {printf("%4d", ListA->elem[i]);}printf("\n");return OK;
}
//打印
int printB(Seqlist ListB) {int j;if (ListB.last == -1) {printf("线性表B为空\n");return ERROR;}for (j = 0; j <= ListB.last; j++) {printf("%4d", ListB.elem[j]);}printf("\n");return OK;
}

这篇关于线性表的减法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1025183

相关文章

数据结构:线性表的顺序存储

文章目录 🍊自我介绍🍊线性表的顺序存储介绍概述例子 🍊顺序表的存储类型设计设计思路类型设计 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾” 和“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入

[数据结构]线性表之单链表的类模板实现

类的具体实现如下: /#include"LinearList.h"#include <iostream>#include <cstdlib>using namespace std;template<class T>struct LinkNode //链表节点类{T data;LinkNode<T>* link;LinkNode(LinkNode<T>* ptr=NULL):

线性表中顺序表的合并

对两个顺序表进行合并,算法的复杂度为O(La.size+Lb.size)。 已知: 顺序线性表La和Lb的元素按值非递减排列 归并La和Lb得到的顺序线性表Lc,Lc的元素也按值非递减排列。 代码定义: void mergeList(SeqList *La,SeqList *Lb,SeqList *Lc){Lc->capacity = La->size + Lb->size;Lc->b

高精度计算----减法运算(浮点型)

基于上一贴,修改减法运算适合于高精度浮点型计算。 因为减法比加法难度大一点,考虑的地方也要多一些,可能代码有欠缺,欢迎指出。 运算说明: 1、相减函数依旧没改变,包括上一贴的判断被减数与减数的大小函数也没变。 2、增加两个函数,取小数位数函数和结果处理(回归小数点)函数 3、与加法浮点高精度运算相比,这里改变较多的是结果处理函数,加法加完后,位数不减反增,而且最多增一位。减法会消失掉好多

高精度计算----减法运算

处理大数减法运算: 1、首先要判断被减数与减数哪个更大,再相应的带入减法函数去处理。具体的比较可以使用字符串的相关知识去比较。 2、相减要先对齐数组,依照减数的长度,执行相应的减法运算次数。 3、不需要借位相减的话,直接减去;需要的话,向前借一位,若前一位是0,则再前借(此时前一位的0变为10)。 测试程序效果如下:   以下代码包括相减函数,比较被减数减数函数,若有错误,请指出:

【OpenCV2.2】图像的算术与位运算(图像的加法运算、图像的减法运算、图像的融合)、OpenCV的位运算(非操作、与运算、或和异或)

1 图像的算术运算 1.1 图像的加法运算 1.2 图像的减法运算 1.3 图像的融合 2 OpenCV的位运算 2.1 非操作 2.2 与运算 2.3 或和异或 1 图像的算术运算 1.1 图像的加法运算 add opencv使用add来执行图像的加法运算 图片就是矩阵, 图片的加法运算就是矩阵的加法运算, 这就要求加法运算的两张图shape必须是相同的. # 图片加法imp

C/C++线性表---顺序表算法全解析

课程笔记来源: MOOC网 郝斌数据结构 之前学过一遍数据结构,面试时候真的忘光了,之前去华环让写一个简单的链表删除算法也是没有写出来,想做CS,必须把数据结构学好了,还是再来一遍吧。 -------------------------------------------------------------------------------------------------------

寒假集训第二天——线性表

现在时间是北京时间1点23分,第二天集训。。。 昨天花了老长时间把线性表看了下,表示很有压力,不大会用。。。 先说下我学到的线性表的皮毛。。。 首先是链表的构建,构建有两种方式: 顺序链表(尾插法建单链表) #include<stdio.h>struct node{int date;struct node *next;};int main(){int i,n;node *he

002线性逻辑结构——线性表

目录 1.数据之间的逻辑关系 2.存储结构的实现 2.1顺序存储结构实现线性表: 对该顺序表进行一系列的增删改查: ①增:         Ⅰ)顺序添加:         Ⅱ)插入添加: ②删:       ③改:       ④查:       输出 整体代码示例 1.数据之间的逻辑关系 线性表:具有相同数据类型的有限个(n)数据元素的序列

【数据结构】—— 线性表

目录 前言一、顺序表1.1 顺序表的定义及其特点1.2 顺序表的C语言实现1.2.1 定义顺序表1.2.2 初始化1.2.3 插入1.2.4 删除1.2.5 查找 二、链表2.1 链表的定义2.2 单向链表的实现2.2.1 定义单向链表2.2.2 创建链表2.2.3 插入元素2.2.4 删除元素2.2.5 查找 2.3 双向循环链表 前言   线性表是最基本、最简单、也是