SDUST数据结构 - chap2 线性表
一、判断题:
二、选择题:
三、编程题:
7-1 jmu-ds-顺序表区间元素删除 :
输入样例:
- 10
- 5 1 9 10 67 12 8 33 6 2
- 3 10
输出样例:
- 1 67 12 33 2
代码:


- #include<stdio.h>
- int main()
- {
- int a[10001];
- int b[10001];//开辟两个比较大的数组
- int n;
- scanf("%d",&n);
- int i;
- for(i=0;i<n;i++)
- scanf("%d",&a[i]);//将数读入
- int x, y;
- int j=0;
- scanf("%d %d",&x,&y);
- for(i=0;i<n;i++)//利用区间判断大小,将区间以外的数加入新数组
- {
- if(a[i]<x||a[i]>y)
- {
- b[j]=a[i];
- j++;
- }
- }
- printf("%d",b[0]);
- for(i=1;i<j;i++)
- {
- printf(" %d",b[i]);
- }
- }
7-2 两个有序链表序列的合并:
输入样例:
- 1 3 5 -1
- 2 4 6 8 10 -1
输出样例:
- 1 2 3 4 5 6 8 10
代码:


- #include<stdio.h>
- #include<stdlib.h>
- typedef struct LNode//链表
- {
- int data;
- struct LNode *next;
- }LNode, *LinkList;
- void MergeList_L(LinkList La, LinkList Lb, LinkList Lc)//排序
- {
- La=La->next;
- Lb=Lb->next;
- while(La!=NULL&&Lb!=NULL)
- {
- if(La->data > Lb->data)
- {
- Lc->next=Lb;
- Lb=Lb->next;
- }
- else
- {
- Lc->next=La;
- La=La->next;
- }
- Lc=Lc->next;
- }
- if(La==NULL&&Lb==NULL) return;
- if(La!=NULL)
- Lc->next=La;
- else
- Lc->next=Lb;
- return;
- }
- LinkList InitList()//
- {
- LinkList l;
- l=(LinkList) malloc (sizeof(struct LNode));
- if(!l) return NULL;
- l->next=NULL;
- return l;
- }
- void ReadList_L(LinkList LLL)//读取
- {
- LinkList temp;
- int data;
- scanf("%d",&data);
- while(data>0)
- {
- temp=(LinkList)malloc(sizeof(struct LNode));
- if(!temp)return;
- temp->data=data;
- temp->next=NULL;
- LLL->next=temp;
- LLL=temp;
- scanf("%d",&data);
- }
- return;
- }
- void PrintList_L(LinkList LL)//打印
- {
- LL=LL->next;
- if(LL==NULL)
- {
- printf("NULL");
- return;
- }
- while(LL)
- {
- if(LL->next==NULL)
- printf("%d",LL->data);
- else printf("%d ",LL->data);
- LL=LL->next;
- }
- }
- int main()
- {
- LinkList s1,s2,S;
- s1 = InitList();
- s2 = InitList();
- S = InitList();
- ReadList_L(s1);
- ReadList_L(s2);
- MergeList_L(s1, s2, S);
- PrintList_L(S);
- return 0;
- }
7-3 两个有序链表序列的交集:
输入样例:
- 1 2 5 -1
- 2 4 5 8 10 -1
输出样例:
- 2 5
代码:


- #include<stdio.h>
- int a[10000001],b[100000001];
- int L1=0,L2=0;
- #define true 1
- int main()
- {
- int i=0,j=0,index=-1;
- while(true)//依次读入数组
- {
- int aa;
- scanf("%d",&aa);
- if(aa==-1)
- break;
- else
- a[L1]=aa,L1++;
- }
- while(true)//依次读入数组
- {
- int bb;
- scanf("%d",&bb);
- if(bb==-1)
- break;
- else
- b[L2]=bb,L2++;
- }
- while(i<L1 && j<L2)
- {
- if(a[i]==b[j])//出现交集,按规定格式输出
- {
- if(index==-1)
- {
- printf("%d",a[i]);
- }
- else
- {
- printf(" %d",a[i]);
- }
- i++,j++,index++;
- }
- else if(a[i] > b[j])//第一个数组对应的数值大于第二个,让第二个数组的下一个进行比较
- j++;
- else
- i++;
- }
- if(index==-1)
- printf("NULL\n");
- else
- printf("\n");
- return 0;
- }
7-4 一元多项式的乘法与加法运算:
输入样例:
- 4 3 4 -5 2 6 1 -2 0
- 3 5 20 -7 4 3 1
输出样例:
- 15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
- 5 20 -4 4 -5 2 9 1 -2 0
代码:


- #include<iostream>
- #include<cstring>
- using namespace std;
- int t1[1005],t2[1005],s1[2005],s2[2005];//定义全局数组
- int main(){
- int n1,n2,a,b;
- memset(t1,0,sizeof(t1));
- memset(t2,0,sizeof(t2));
- memset(s1,0,sizeof(s1));
- memset(s2,0,sizeof(s2));//初始化数组
- cin>>n1;//先输入系数,后输入指数
- for(int i=0;i<n1;i++){
- cin>>a>>b;
- t1[b]=a;
- }
- cin>>n2;
- for(int i=0;i<n2;i++){
- cin>>a>>b;
- t2[b]=a;
- }////指数作为下标,系数作为数组元素
- for(int i=0;i<=1000;i++){
- for(int j=0;j<=1000;j++){
- s1[i+j]+=t1[i]*t2[j];
- }
- }
- for(int o=0;o<=1000;o++){
- s2[o]+=t1[o]+t2[o];
- }
- int tag=0;
- for(int i=2000;i>=0;i--)
- if(s1[i]!=0){
- if(tag)
- cout<<" ";
- tag=1;
- cout<<s1[i]<<" "<<i;
- }//判断个事进行输出
- if(!tag)cout<<"0 0";
- cout<<endl;
- tag=0;
- for(int i=1000;i>=0;i--)
- if(s2[i]!=0){
- if(tag)
- cout<<" ";
- tag=1;
- cout<<s2[i]<<" "<<i;
- }//同上
- if(!tag)cout<<"0 0";
- cout<<endl;
- return 0;
- }
7-5 一元多项式求导:
输入样例:
- 3 4 -5 2 6 1 -2 0
输出样例:
- 12 3 -10 1 6 0
代码:


- #include<bits/stdc++.h>
- using namespace std;
- int main()
- {
- int a, b;
- int s = 0;//用于计算系数和幂的乘积
- cin>>a>>b;
- if(b != 0)
- cout<<(a*b)<<" "<<(b-1);//先计算一组,方便最后一组末尾的消除空格
- else//特殊情况:即多项式为常数的情况
- {
- cout<<"0 0";
- return 0;
- }
- while(scanf("%d %d", &a, &b) != EOF)//输入多组数据
- {
- if(b != 0)
- {
- s = a*b;
- cout<<" "<<s<<" "<<(b-1);//进行求导计算
- }
- }
- return 0;
- }
7-6 求链式线性表的倒数第K项 :
输入样例:
- 4 1 2 3 4 5 6 7 8 9 0 -1
输出样例:
- 7
代码:


- #include<stdio.h>
- int a[1000001];//第一次提交显示数组越界(段错误)
- int main()
- {
- int look_for;
- scanf("%d",&look_for);//读入下标
- int index;
- int i = 0;
- while(scanf("%d",&index)>=0)//将大于等于0的数读入
- {
- a[i]=index;
- i++;
- }
- i--;//循环里面多一次i++,减掉
- if(i-look_for<0)//判断下标是否符合要求
- {
- printf("NULL\n");
- }
- else
- {
- printf("%d\n",a[i-look_for]);
- }
- return 0;
- }
SDUST数据结构 - chap2 线性表的更多相关文章
- 用C#学习数据结构之线性表
什么是线性表 线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract),线性结构的特点是结构中的数据元素之间存在一对一的线性关系.这种一对一的关系指的是数据元素之间的位置关 ...
- 数据结构之线性表(python版)
数据结构之线性表(python版) 单链表 1.1 定义表节点 # 定义表节点 class LNode(): def __init__(self,elem,next = None): self.el ...
- C语言数据结构-顺序线性表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作
1.数据结构-顺序线性表的实现-C语言 #define MAXSIZE 100 //结构体定义 typedef struct { int *elem; //基地址 int length; //结构体当 ...
- javascript实现数据结构:线性表--简单示例及线性表的顺序表示和实现
线性表(linear list)是最常用且最简单的一种数据结构.一个线性表是n个数据元素的有限序列.在稍复杂的线性表中,一个数据元素可以由若干个数据项(item)组成. 其中: 数据元素的个数n定义为 ...
- javascript实现数据结构:线性表--线性链表(链式存储结构)
上一节中, 线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中任一元素,它的存储位置可用一个简单,直观的公式来表示.然后,另一方面来看,这个特点也造成这种存储 ...
- Java数据结构之线性表(2)
从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...
- Java数据结构之线性表
从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...
- C 数据结构1——线性表分析(顺序存储、链式存储)
之前是由于学校工作室招新,跟着大伙工作室招新训练营学习数据结构,那个时候,纯碎是小白(至少比现在白很多)那个时候,学习数据结构,真的是一脸茫然,虽然写出来了,但真的不知道在干嘛.调试过程中,各种bug ...
- 算法与数据结构(一) 线性表的顺序存储与链式存储(Swift版)
温故而知新,在接下来的几篇博客中,将会系统的对数据结构的相关内容进行回顾并总结.数据结构乃编程的基础呢,还是要不时拿出来翻一翻回顾一下.当然数据结构相关博客中我们以Swift语言来实现.因为Swift ...
随机推荐
- Typora+图床详解(小白都能学得会)
Typora+图床详解(小白都能学得会) 1 了解工作 博客中用的笔记软件--Typora(Markdown语法) 博客中用的图床--阿里云对象存储(Object Storage Service,简称 ...
- windows远程msra windows使用技巧
qq远程太慢,mstsc?又不想把电脑密码告诉好友,怎么办呢?在这里推荐一个方法: 点击开始运行输入msra,确定,邀请信任的人帮助你您,将该邀请另存为文件,然后这个窗口不要关,把密码复制粘贴给好友, ...
- Unity 保存游戏,读取游戏,退出游戏
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 using System. ...
- IDEA创建maven项目很慢的问题解决方式
问题现象:刚转IDEA开发,发现创建maven项目,非常慢. 解决方式: 构建maven项目添加参数,要不然非常慢,会卡住-DarchetypeCatalog=internal 自动导入包,codin ...
- git单人本地操作
git配置个人信息 git config --global user.name "用户名" git config --global user.email "邮箱" ...
- Kafka Producer TimeoutException
基本需求 程序读取HDFS上的日志发送至Kafka集群 由于日志量较大 每小时约7亿条+ 采用多线程 多producer实例发送 TPS 可达到120W+ 修改前Producer配置 val prop ...
- bp VNext 入门——让ABP跑起来
因好多群友@我说,ABP他们简单的了解了下,按照官方的教程一路下来跑不起来(倒在了入门的门口),才有了此文. 此文结合官方文档,一步一步带领大家让ABP跑起来(跨过门口). 建议大家一步一步实际动手操 ...
- 最详细10招Spark数据倾斜调优
最详细10招Spark数据倾斜调优 数据量大并不可怕,可怕的是数据倾斜 . 数据倾斜发生的现象 绝大多数 task 执行得都非常快,但个别 task 执行极慢. 数据倾斜发生的原理 在进行 shuff ...
- 8. 老板 不加薪,我用了 这篇 加了 3K
在K8S中,容器本身是非持久化的,当容器崩溃后,kubelet将以镜像的初始状态重新启动容器,但是此时之前容器的数据已经丢失,我们该如何保护好容器的数据呢? 在同一Pod中的容器往往需要共享一些数据, ...
- 安装篇二:CentOS 6.9系统安装
具体安装流程,请查下面安装图片 安装时五个选项说明如下: