当前位置: 首页 > news >正文

线性表应用(非递减合并、分解链表、删除线性表)

         将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其它的存储空间。表中允许有重复的数据。

#include<iostream>
using namespace std;
typedef struct list
{int data;list* next;
}list,*linklist;
void Createlist(linklist& l)
{l = new list;l->next = NULL;linklist p,r;r = l;for (int i = 0; i < 5; i++){p = new list;cin >> p->data;r->next = p;r = p;}p->next = NULL;
}
void Addlist(linklist& L1, linklist& L2)
{linklist L3, pa, pb,p;pa = L1->next;pb = L2->next;L3 = L1, L3->next = NULL;while (pa || pb){if (pa==NULL){p = pb;pb = pb->next;}else if (pb==NULL){p = pa;pa = pa->next;}else if (pa->data <= pb->data){p = pa;pa = pa->next;}else{p = pb;pb = pb->next;}p->next = L3->next;L3->next = p;}delete L2;
}
void Printlist(linklist& l)
{linklist p;p = l->next;while (p){cout << p->data<<" ";p = p->next;}
}
int main()
{linklist L1, L2;cout << "输入第一个链表:" << endl;Createlist(L1);cout << "输入第二个链表:" << endl;Createlist(L2);Addlist(L1, L2);cout << "合并链表:" << endl;Printlist(L1);
}

       设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A中的元素为非零整数,要求B、C表利用A表的结点)。

#include<iostream>
using namespace std;
typedef struct list
{int data;list* next;
}list,*linklist;
void Createlist(linklist& l)
{l = new list;l->next = NULL;linklist p,r;r = l;for (int i = 0; i <10; i++){p = new list;cin >> p->data;r->next = p;r = p;}p->next = NULL;
}
void Separatelist(linklist& L1, linklist& L2, linklist& L3)
{L3 = new list;L3->next = NULL;linklist p,r;p = L1->next;L2 = L1;L2->next = NULL;while (p){r = p->next;if (p->data < 0){p->next = L2->next;L2->next = p;}else{p->next = L3->next;L3->next = p;}p = r;}
}
void Printlist(linklist& l)
{linklist p;p = l->next;while (p){cout << p->data<<" ";p = p->next;}cout << endl;
}
int main()
{linklist L1, L2,L3;cout << "输入第一个链表:" << endl;Createlist(L1);Separatelist(L1, L2, L3);cout << "拆分链表:" << endl;Printlist(L2);Printlist(L3);
}

 

       已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O (1)的算法,该算法删除线性表中所有值为ite m的数据元素。

#include<iostream>
#define maxsize 100
using namespace std;
typedef struct node
{int data;
}Node;
typedef struct
{Node* elem;int length;
}Sqlist;
void Initlist(Sqlist& L)
{L.elem = new Node[maxsize];L.length = 0;
}
int Createlist(Sqlist& L)
{if (L.length == maxsize) return 0;for (int i = 0; i < 10; i++){cin >> L.elem[i].data;L.length++;}return 1;
}
void Deletelist(Sqlist& L, Node e)
{int k = 0;for (int i = 0; i < L.length; i++){if (L.elem[i].data != e.data){L.elem[k].data = L.elem[i].data;k++;}}L.length = k;
}
void Printlist(Sqlist L)
{for (int i=0;i<L.length;i++){cout << L.elem[i].data << " " ;}cout << endl;
}
int main()
{Sqlist A;Initlist(A);Createlist(A);cout << "原线性表:" << endl;Printlist(A);cout << "输入要删除的一个数:" << endl;Node n;cin >> n.data;Deletelist(A,n);Printlist(A);
}

 

http://www.lryc.cn/news/172968.html

相关文章:

  • 【C++面向对象侯捷下】1.导读
  • Ubuntu22.04 vnc远程黑屏
  • 【1区TOP】Elsevier旗下CCF推荐,仅3个月左右录用!
  • CentOS下安装Python3
  • 微信小程序底部安全区域高度获取
  • 虚拟机部署linux网络连接配置
  • 2591. 将钱分给最多的儿童(Java)
  • c++23中的新功能之十五类tuple类型的完全支持
  • iPhone15线下购买,苹果零售店前门店排长队
  • Vue3如何优雅的加载大量图片?
  • Go语言开发环境搭建指南:快速上手构建高效的Go开发环境
  • flex布局与float布局
  • 【C语言】字符函数和字符串函数(含模拟)
  • 基于YOLOv8模型的条形码二维码检测系统(PyTorch+Pyside6+YOLOv8模型)
  • 2023/09/22 制作demo期间心得
  • 高阶数据结构——图
  • 高性能AC算法多关键词匹配文本功能Java实现
  • 如何在没有第三方.NET库源码的情况,调试第三库代码?
  • 仿互站资源商城平台系统源码多款应用模版
  • 华为云云耀云服务器L实例评测 | L实例性能测试实践
  • VR赋能红色教育,让爱国主义精神永放光彩
  • 计算机视觉与深度学习-卷积神经网络-卷积图像去噪边缘提取-图像去噪 [北邮鲁鹏]
  • 三行代码实现图像画质修复,图片清晰度修复,清晰度提升python
  • 企业电子招投标采购系统源码之电子招投标的组成
  • 【MySQL】 MySQL的增删改查(进阶)--贰
  • 第七章 查找
  • openfeign返回消息报错.UnknownContentTypeException
  • [Linux入门]---Linux项目自动化构建工具-make/Makefile
  • [Python进阶] 程序打包之Pyinstaller参数介绍
  • Python中如何判断列表中的元素,是否在一段文本中??