一、判断题:

二、选择题:

三、编程题:

  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 线性表的更多相关文章

  1. 用C#学习数据结构之线性表

    什么是线性表 线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract),线性结构的特点是结构中的数据元素之间存在一对一的线性关系.这种一对一的关系指的是数据元素之间的位置关 ...

  2. 数据结构之线性表(python版)

    数据结构之线性表(python版) 单链表 1.1  定义表节点 # 定义表节点 class LNode(): def __init__(self,elem,next = None): self.el ...

  3. C语言数据结构-顺序线性表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作

    1.数据结构-顺序线性表的实现-C语言 #define MAXSIZE 100 //结构体定义 typedef struct { int *elem; //基地址 int length; //结构体当 ...

  4. javascript实现数据结构:线性表--简单示例及线性表的顺序表示和实现

    线性表(linear list)是最常用且最简单的一种数据结构.一个线性表是n个数据元素的有限序列.在稍复杂的线性表中,一个数据元素可以由若干个数据项(item)组成. 其中: 数据元素的个数n定义为 ...

  5. javascript实现数据结构:线性表--线性链表(链式存储结构)

    上一节中, 线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中任一元素,它的存储位置可用一个简单,直观的公式来表示.然后,另一方面来看,这个特点也造成这种存储 ...

  6. Java数据结构之线性表(2)

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  7. Java数据结构之线性表

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  8. C 数据结构1——线性表分析(顺序存储、链式存储)

    之前是由于学校工作室招新,跟着大伙工作室招新训练营学习数据结构,那个时候,纯碎是小白(至少比现在白很多)那个时候,学习数据结构,真的是一脸茫然,虽然写出来了,但真的不知道在干嘛.调试过程中,各种bug ...

  9. 算法与数据结构(一) 线性表的顺序存储与链式存储(Swift版)

    温故而知新,在接下来的几篇博客中,将会系统的对数据结构的相关内容进行回顾并总结.数据结构乃编程的基础呢,还是要不时拿出来翻一翻回顾一下.当然数据结构相关博客中我们以Swift语言来实现.因为Swift ...

随机推荐

  1. hive with as 语法

    简介 with...as...需要定义一个sql片段,会将这个片段产生的结果集保存在内存中, 后续的sql均可以访问这个结果集和,作用与视图或临时表类似. 语法说明 with...as...必须和其他 ...

  2. Vscode下载与配置(C语言)

    目录 VScode 一.VScode下载 二.设置中文 三.Vscode界面介绍 1.活动栏 2.侧边栏 3.编辑栏 4.面板栏 四.VScode配置 1.C&C++配置 第一步 下载安装Mi ...

  3. 【入门必看】不理解「对象」?很可能有致命bug:简单的Python例子告诉你

    简介:越来越多的人要在学习工作中用到『编程』这个工具了,其中很大一部分人用的是Python.大部分人只是做做简单的科研计算.绘图.办公自动化或者爬虫,但-- 这就不需要理解「指针与面向对象」了吗? 在 ...

  4. 用matlab提取jpg曲线数据或者jpg图片重新复原

    I = imread('111.jpg');%读取处理好的图片,必须是严格坐标轴线为边界的图片 I=rgb2gray(I); %灰度变化 I(I>200)=255; %二值化 I(I<=2 ...

  5. MGRE综合实验

    实验要求: 实验拓扑: 一. R1-2-3构建星型结构的MGRE结构,R1为中心站点,假设R1的共有IP为固定地址 1. 配置IP地址 2. 配置缺省 3. 配置MGRE环境 在中心站点上: 在分支站 ...

  6. 如何查看打印机的IP地址和MAC地址

    1.  打开控制面板,选择设备和打印机: 2.  选中打印机,右键单机,选择打印机 "属性": 3. 选择web服务,可以直接查看打印机的IP地址或MAC地址,如下图所示: 4. ...

  7. MES系统介绍

    为什么要引入MES系统? 随着ERP在企业应用的深入,ERP系统逐渐显示出其局限性.当ERP下达的工单到生产现场后,产品制造是以产线 "工单"或"批次"(Bat ...

  8. Winform Dock顺序调整

    在布局的时候,当一个窗体内有多个控件使用了Dock属性来布局,Dock顺序的调整: 最近被.net winform中的控件布局搞困惑了,由于控件都是使用Dock方式的,操作起来也是比较方便,如果最大化 ...

  9. 160个Crackerme破解

    001: 第一个破解: 有两种登陆方式:序列号/名字和序列号,观察报错信息 两个报错信息,直接中文搜索字符: 第一种登陆方式报错为:sorry,xx 右键中文字符搜索,ctrl+f输入要搜索的字符,这 ...

  10. Singleton Pattern -- 不一样的单例模式

    Singleton Pattern -- 单例模式 单例模式是用来创建一个只能又一个实例的对象. 单例模式类图如下. 单例模式有两大好处: (1)对于频繁使用的对象,可以省略创建对象所话费的时间,这对 ...