数据结构.pta测试二


#include<iostream>
using namespace std;
typedef struct node
{
    int data;
    node* next;
}*List;

List listPoduce()
{
    int a;
    List L;
    node * r, * new0;//创建指针
    L = new node();//分配空间
    r = L;
    cin >> a;
    while (a != -1)
    {
        new0 = new node();
        new0->data = a;
        r->next = new0;
        r = new0;
        cin >> a;
    }
    r->next = NULL;
    return L;
}
//创建一个链表,将两个链表串起来 
List CombList(node* L1, node* L2)
{
    node* a, * b, * c;
    List L;
    L = new node();
    a = L1->next;                               
    b = L2->next;
    c = L;
    while (a&& b)
    {
        if (a->data <= b->data) {//如果a小。则将a的数据落入c中
            c->next = a;

            c = a;

            a = a->next;
        }
        else {
            c->next = b;//如果b小,同此
            c = b;
            b = b->next;
        }
    }
    if (a)//直接链接a之后的结点
        c->next = a;
    else if (b)
        c->next = b;//直接链接b之后的结点
    
    return L;
}
//输出打印链表 
void pintL(node* L)
{
    node* p = L->next;
    if (p == NULL)
    {
        printf("NULL");
        return;
    }
    while (p)
    {
        cout<<p->data;
       
        p = p->next;
        if (p)
           cout<<" ";
    }
}
int main()
{
    node* s1, * s2, * s3;
    s1 = listPoduce();//创建s1

    s2 = listPoduce();//创建s2
    s3 = CombList(s1, s2);//计算
    pintL(s3);//打印
    return 0;
}

#include<iostream>
using namespace std;
typedef struct node
{
    int data;
    node* next;
}*List;

List listPoduce()
{
    int a;
    node* L, * r, * new0;//创建指针
    L = new node();//分配空间
    r = L;
    cin >> a;
    while (a != -1)
    {
        new0 = new node();
        new0->data = a;
        r->next = new0;
        r = new0;
        cin >> a;
    }
    r->next = NULL;
    return L;
}
void pintList(node* L)
{
    node* p = L->next;
    if (p == NULL)
    {
        printf("NULL");
        return;
    }
    while (p != NULL)
    {	
        printf("%d", p->data);
        p = p->next;
        if (p != NULL)
            printf(" ");
    }
}
List jiaoji(List a, List b)
{
    node* la = a->next;
    node* lb = b->next;
    List C = new node();
    C->next = NULL;
    node* c = C;
    while (la&& lb)
    {
        if (la->data < lb->data)
        {
            la = la->next;
        }
        else if (la -> data > lb->data)
        {
            lb = lb->next;
        }
        else if (la->data == lb->data)
        {
            c->next = la;
            la = la->next;
            lb = lb->next;
            c = c->next;
        }
    }
    return C;
}
int main()
{
    node* a, * b, * cc;
    a = listPoduce();
    b = listPoduce();
    cc = jiaoji(a, b);
    pintList(cc);

}

#include<iostream>
#include<malloc.h>
using namespace std;
typedef struct node {
    int coef;//系数
    int exp;//指数
    node* next;//在c++中支持node*这种写法
}list;
node* newNode(int c, int e)//创建一个新结点
{
    node* temp = (node*)malloc(sizeof(node));
    temp->coef = c;//系数
    temp->exp = e;//指数
    temp->next = NULL;
    return temp;
}
list* createPoly(int n)//创建长度为n的链表
{
    list* L = NULL;//创建一个指针表示链表
    if (n == 0)//如果链表的长度为0,则直接返回
    {
        return L;
    }
    else
    {
        L = (list*)malloc(sizeof(node));//如果链表的长度不是0,则分配空间
    }
    int ac = 0;//初始化系数
    int ae = 0;//初始化指数
    node* lastp = L;//创建尾指针
    node* temp = NULL;//创建一个指针用来接收新插入的结点
    for (int i = 0; i < n; i++)
    {
        cin >> ac >> ae;//输入系数,指数
        temp = newNode(ac,ae);//接收这个新的结点
        lastp->next = temp;//尾插入新的结点
        lastp = temp;//更新尾结点
    }
    return L;//返回这条链表
}
list* addPoly(list* A, list* B)//将两个多项式相加
{
    if (!A->next)return B;
    if (!B->next)return A;
    node* pa = A->next;//pa指向A的第一项
    node* pb = B->next;//pb指向B的第一项
    list* sum = (list*)malloc(sizeof(node));//创建一个计算总和的链表
    sum->next = NULL;//初始化
    node* lastp = sum;//尾结点
    node* temp = NULL;//创建一个临时结点
    while (pa && pb)//如果满足二者的长度在多项式内 
    {
        if (pa->exp == pb->exp)//并且这一项的指数相同
        {
            if (pa->coef + pb->coef != 0)//并且相加还不等于0
            {
                temp = newNode(pa->coef + pb->coef, pa->exp);//那么就得到这个系数相加后的结点
                lastp->next = temp;//尾插入总和链表
                lastp = temp;
            }
            pa = pa->next;//指针向后移动
            pb = pb->next;

        }
        else if (pa->exp > pb->exp)//如果pa的指数比pb的指数大
        {
            temp = newNode(pa->coef, pa->exp);//将pa落下来
            lastp->next = temp;//尾插
            lastp = temp;
            pa = pa->next;//移动
        }
        else//如果pa的指数比pb小,同理
        {
            temp = newNode(pb->coef, pb->exp);
            lastp->next = temp;
            lastp = temp;
            pb = pb->next;
        }
    }
    if (pa == NULL && pb != NULL)//如果pa指向空,将pb后面的全部落下来
    {
        lastp->next = pb;

    }
    if (pb == NULL && pa != NULL)//同理
    {
        lastp->next = pa;
    }
    return sum;
}
void printPoly(list*L)//打印链表
{
    if (!L->next)//如果链表为空,则直接打印0 0
    {
        cout << "0 0";

    }
    else//如果链表不为空
    {
        node* p = L->next;//p指向第一个结点
        int i = 0;
        while (p)
        {
            if (i == 0)
            {
                cout << p->coef << " " << p->exp;
                i++;
            }
            else
            {
                cout << " " << p->coef << " " << p->exp;
            }
            p = p->next;
        }
    }
}
int main()
{
    int n, m;
    cin >> n;
    list* La = createPoly(n);//创建A链表
    cin >> m;
    list* Lb = createPoly(m);//创建B链表
    list* result = addPoly(La, Lb);//计算
    printPoly(result);//打印
    return 0;
}

#include<iostream>
using namespace std;
typedef struct node {
    int data;
    node* next;
}*list;
list Createlist(int n){
    list L;
    L = new node();
   
    
   
    node* p = L;
    L->next = NULL;
    while (n--)
    {
        node* t = new node();
        int x;
        cin >> x;
        t->data = x;
       
        p->next = t;
        p = t;

        
    }
    p->next = NULL;
    return L;
}
void Put(list L)
{
    
    node* s = L->next;
    cout << s->data;
    s = s->next;
    while (s!=NULL)
    {
        cout << " " << s->data;
        s = s->next;
    }
}
list Insert(list L, int m)
{
    node* p = L;
    while (p->next)
    {
        if (p->next->data == m)
        {
            return L;
        }
        if (p->next->data > m)
        {
            node* s = new node();
            s->data = m;
            s->next = p->next;
            p->next = s;
            return L;
        }
        p = p->next;

    }
    if (p->data < m)
    {
        node* s = new node();
        s->next = NULL;
        s->data = m;
        s->next = p->next;
        p->next = s;
    }
    return L;
}
int main()
{
    int n;
    cin >> n;
    list L = Createlist(n);
    int m;
    cin >> m;
   
    Insert(L, m);
 Put(L);
    return 0;
}



#include<iostream>
using namespace std;
const int N = 100000;
int arr[N];
int main()
{
	int aa, bb;
	int x, y;
	char cc;
	int tt = 0;

	cout << aa << bb;
	//输入人数和操作



	for (int i = 1; i <= bb; i++)
	{
		getchar();//获得操作

		cout << cc;
		if (cc == 'I')//排在队尾 
		{



			cout << x;
			arr[tt++] = x;//将x插入到队尾
			



		}
		 if (cc == 'C')
		{
			 cout << x << y;
			for (int i = 0; i < tt; i++)//将x插入到y的前面
			{



				if (arr[i] == y)
				{
					for (int j = tt; j > i; j--)



					{
						arr[j] = arr[j - 1];//往后移动
					}
					arr[i] = x;
					break;
				}

			}
			tt = tt + 1;
		}
		if (cc == 'L')
		{
			cout << x;
			for (int i = 0; i < tt; i++)
			{
				if (arr[i] == x)
				{




					for (int j = i; j < tt - 1; j++)
					{



						arr[j] = arr[j + 1];
					}


					break;
				}
			}
			tt--;
		}
	}
			if (tt == 0)
	{
		printf("Bai Ren Zhan");
	}
	else
	{




		for (int i = 0; i < tt; i++)
		{




			printf("%d ", arr[i]);





		}
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/465798.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机的灭火机器人设计

目 录 摘 要 I Abstract II 引 言 1 1 系统方案设计 4 1.1 方案论证 4 1.2 灭火机器人系统工作原理 4 2 系统硬件设计 6 2.1 单片机 6 2.2 火焰探测系统设计 8 2.3 灭火系统设计 8 2.4 循迹模块设计 9 2.5 电机驱动模块 10 3 系统软件设计 12 3.1 系统软件开发环境 12 3.2 系统…

数据库事务中“锁”的分类

数据库事务中的锁可以按照不同的维度进行分类。以下是一些常见的分类方式&#xff1a; 1、按锁的粒度分类&#xff1a; 行锁&#xff08;Row-level lock&#xff09;&#xff1a;锁定单个或少量的数据行。这种锁粒度小&#xff0c;允许高度的并发&#xff0c;但管理开销大。页…

【每日一题】303. 区域和检索 - 数组不可变-2024.3.18

题目&#xff1a; 303. 区域和检索 - 数组不可变 给定一个整数数组 nums&#xff0c;处理以下类型的多个查询: 计算索引 left 和 right &#xff08;包含 left 和 right&#xff09;之间的 nums 元素的 和 &#xff0c;其中 left < right 实现 NumArray 类&#xff1a;…

JS拖曳盒子案例

让我为大家带来一个小案例吧&#xff01; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>* {margin: 0;padding: 0;}.box1 {width: 100px;height: 100px;background-color: black;margin-bot…

MyBatisPlus 之一:Spring 整合 MyBatisPlus 及雪花算法

1. Mybatis-Plus简介 Mybatis-Plus&#xff08;简称MP&#xff09;是一个 Mybatis 的增强工具&#xff0c;在 Mybatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。这是官方给的定义&#xff0c;关于mybatis-plus的更多介绍及特性&#xff0c;可以参考http…

力扣203. 移除链表元素

写法1、头节点 和 后面的节点 删除规则不一致 class Solution {public ListNode removeElements(ListNode head, int val) {//如果不建虚拟头节点&#xff0c;那删头节点和删后面的节点&#xff0c;逻辑是不一样的//头节点可能连续多个命中val,所以有while&#xff0c;不是ifwh…

Python从0到100(六):Python分支和循环结构的应用

分支和循环结构的重要性不言而喻&#xff0c;它是构造程序逻辑的基础。 一、程序的结构控制 单分支结构&#xff1a; 单分支结构是分支结构中最简单的一种方式&#xff0c;单分支结构只需要判断一个条件&#xff0c;根据这个条件是否成立来决定是否执行一段语句。 二分支结…

基于Spring Boot的煤矿信息管理系统

摘 要 系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方法对煤矿信息管理的现状进行系统调查。采用结构化的分析设计&#xff0c;该方法要求结合一定的图表&#xff0c;在模块化的基础上进行系统的开发工作。在设计中采用“自下而上…

亮点抢先看!4月16-17日,百度Create大会开设“AI公开课”,大咖带你打造赚钱工具

3月16日&#xff0c;2024百度Create AI开发者大会正式开放售票&#xff0c;嘉宾套票定价399元。据悉&#xff0c;本次大会以“创造未来&#xff08;Create the Future&#xff09;”为主题&#xff0c;设有20深度论坛、超30节AI公开课、3000平AI互动体验区和AI音乐节等精彩环节…

【Linux】基础 IO(文件系统 inode 软硬链接)-- 详解

一、理解文件系统 1、前言 我们一直都在说打开的文件&#xff0c;磁盘中包含了上百万个文件&#xff0c;肯定不可能都是以打开的方式存在。其实文件包含打开的文件和普通的未打开的文件&#xff0c;下面重点谈谈未打开的文件。 我们知道打开的文件是通过操作系统被进程打开&am…

每日五道java面试题之mybatis篇(四)

目录&#xff1a; 第一题. 映射器#{}和${}的区别第二题. 模糊查询like语句该怎么写?第三题. 在mapper中如何传递多个参数?第四题. Mybatis如何执行批量操作第五题 MyBatis框架适用场景 第一题. 映射器#{}和${}的区别 #{}是占位符&#xff0c;预编译处理&#xff1b;${}是拼接…

3.程序语言基础知识

主要议题&#xff1a; 掌握高级语言、低级语言的特点和应用场景&#xff1b; 程序编译&#xff0c;记词法、文法规则&#xff1b; 表达式主要考察中缀表达式和后缀表达式之间的相互转换&#xff1b; 传值与传址&#xff0c;分清特点&#xff0c;结合程序代码求值&#xff1b; …

python知识点总结(二)

这里写目录标题 1、什么是解释性语言&#xff0c;什么是编译性语言&#xff1f;2、说说中作用域是怎么划分的3、type和isinstance方法的区别4、浅拷贝和深拷贝5、python中变量在内存中存储方式6、python中的封装、继承、多态7、python中内存管理机制是怎么样的&#xff1f;8、简…

S32DS 中编译生成bin文件

1、按下图执行 按下图勾选 Create flash image 再次打开Properties 选择 Raw Binary 选择Debug_Flash进行编译后&#xff0c;在Debug_Flasg文件夹下就会出现bin文件 若没有出现 右键选择refresh 刷新一下即可

Python Web开发记录 Day13:Django part7 Ajax入门与案例(任务管理)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、Ajax入门①简介②工作原理③优点④缺点⑤使用…

明远创意生活引领经典家纺品牌“大朴”走向新生

十二年前,有一个初创的国产家纺品牌,大胆地向消费者喊出领先于行业的标准——“无甲醛、无荧光增白剂、无致癌物”。凭借这样极致的健康承诺,“大朴”国内销售规模迅速超过一亿人民币,成功引领行业风气,收获了众多忠实粉丝。 2023年,因资金链断裂,“大朴”原公司破产清算,这个…

图书管理系统

一.book包 1.书的类 一本书的基本内容&#xff1a; 成员变量是private那么我们就需要set和get方法&#xff0c;也需要一个构造方法&#xff1a; Tostring的方法也需要加上&#xff1a; 2.书的增加是i在书架上操作的&#xff0c;创建一个BookList类 首先我们需要让书和书…

nginx 基本使用、借助 nginx 和 mkcert 实现本地 https://localhost 测试。

CSDN 如何将资源设置为免费&#xff1f; 安装和基本使用 进入 nginx 官网 下载 Mainline version 版本 解压到一个你喜欢的位置&#xff0c;比如解压到 C: 目录 不管配不配置环境变量&#xff0c;对 nginx 的所有操作都应该在对应文件夹中 基本命令的使用&#xff1a; cd …

初级爬虫实战——哥伦比亚大学新闻

文章目录 发现宝藏一、 目标二、简单分析网页1. 寻找所有新闻2. 分析模块、版面和文章 三、爬取新闻1. 爬取模块2. 爬取版面3. 爬取文章 四、完整代码五、效果展示 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…

手写微前端micro-app-页面渲染

我们可以使用循环递归的方式提取上面字符串资源中所有遍历到的link、style、script标签&#xff0c;提取静态资源地址并格式化标签。 在source.js文件中&#xff0c;添加extraSourceDom函数&#xff0c;用来提取link&#xff0c;script这种特殊标签 // 提取link的css链接 fun…
最新文章