线性结构

线性表

匿名 (未验证) 提交于 2019-12-03 00:36:02
基本内容 学习要点 问题 逻辑结构 :数据的逻辑结构是指数据元素之间的逻辑关系,是呈现在用户面前的、能感知到的数据元素的组织形式。 按照数据元素之间逻辑关系的特性,可以将数据结构归纳为:集合;线性结构;树形结构;图形结构。 线性结构 :线性结构中数据元素之间存在“一对一”的关系,也就是指在结构非空的时候,线性结构有且仅有一个开始节点和一个终端节点。开始节点没有前驱但有一个后继,终端节点没有后继但有一个前驱。其余节点有且只有一个前驱和一个后继 文章来源: 线性表

实验六

你说的曾经没有我的故事 提交于 2019-12-03 00:12:24
20182334 2019-2020-1 《数据结构与面向对象程序设计》实验六报告 课程:《程序设计与数据结构》 班级: 1823 姓名: 姬旭 学号: 20182334 实验教师:王志强 实验日期:2019年10月21日 必修/选修: 必修 1.实验内容 一、线性结构之链表(1) 通过键盘输入一些整数,建立一个链表(1分); 这些数是你学号中依次取出的两位数。 再加上今天的时间。 例如你的学号是 20172301 今天时间是 2018/10/1, 16:23:49秒 数字就是 20, 17,23,1, 20, 18,10,1,16,23,49 打印所有链表元素, 并输出元素的总数。 在你的程序中,请用一个特殊变量名来纪录元素的总数,变量名就是你的名字。 例如你叫 张三, 那么这个变量名就是 int nZhangSan = 0; //初始化为 0. 做完这一步,把你的程序签入源代码控制(git push)。 二、线性结构之链表(2) 实现节点插入、删除、输出操作(2分,3个知识点根据实际情况酌情扣分); 继续你上一个程序, 扩展它的功能,每做完一个新功能,或者写了超过10行新代码,就签入代码,提交到源代码服务器; 从磁盘读取一个文件, 这个文件有两个数字。 从文件中读入数字1, 插入到链表第 5 位,并打印所有数字,和元素的总数。 保留这个链表,继续下面的操作。 从文件中读入数字2

线性结构之习题选讲-ReversingLinkedList

匿名 (未验证) 提交于 2019-12-03 00:10:02
Ŀ¼ 更新、更全的《数据结构与算法》的更新网站,更有python、go、人工智能教学等着你: https://www.cnblogs.com/nickchen121/p/11407287.html 有块地方存储数据 有块地方存储指针――下一个结点的地址 /* c语言实现 */ Ptr Reverse(Ptr head, int K) { cnt = 1; new = head->next; old = new->next; while (cnt < K) { tmp = old->next; old->next = new; new = old; old = tmp; cnt++; } head->next->next = old; return new; } 取巧: 用顺序表存储,先排序,再直接逆序输出。 对上述取巧的解决方案: 在内存里多加几个没用的结点。 在 pat测试 中,这道题的测试数据主要关心一下几点: 有尾巴不反转 有多余结点 地址取到上下界 正好全反转 K=N全反转 K=1不用反转 最大(最后剩K-1不反转)、最小N 来源:博客园 作者: 咸鱼Chen 链接:https://www.cnblogs.com/nickchen121/p/11562533.html

线性结构的简单总结

匿名 (未验证) 提交于 2019-12-02 23:35:02
大二上学了数据结构, 对各种线性结构的结构体如何定义,和一些基本操作 简单总结一下: 一、线性表 ①顺序表结构体 { ElemType *elem;//存储空间基址 int listsize;//当前分配的存储容量 }SqList; 基本操作 构造线性表 L.elem =(ElemType*)malloc(LIST_INIT _SIZE*sizeof(ElemType)); 增加空间 L.elem =(ElemType*)realloc(LISTINCREMENT*sizeof(ElemType)); listsize+=LISTCREMENT; 判满 if(length==listsize) 插入数据 L.elem++ = e; length++; ②链表结构体 {//结点 }*Link,*Position; typedef struct {//链表 Link head,tail;//头结点和尾结点地址 int len;//链表长度 }LinkList; 1)线性链表 2)循环链表 3)双向链表 文章来源: https://blog.csdn.net/qq_36340237/article/details/78450123

数据结构的分类

旧巷老猫 提交于 2019-12-02 18:24:51
数据结构 逻辑结构 集合结构 线性结构 树形结构 图形结构 物理结构(存储结构) 顺序结构 链式结构 集合结构:集合结构中的元素是平等的一种关系,相互独立 线性结构:线性结构中的元素是一对一的关系 树形结构:树形结构中的元素是一对多的关系 图形结构:图形结构中的元素是多对多的关系   来源: https://www.cnblogs.com/lyd447113735/p/11757581.html

PTA数据结构-02-线性结构2 一元多项式的乘法与加法运算

青春壹個敷衍的年華 提交于 2019-12-02 05:56:22
一、题目 设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出 0 0 。 输入样例: 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 二、解答 import java.util.*; public class Main { public static void main(String[] args) { //指数为key,系数为value,存放成map HashMap<Integer,Integer> map1 = new HashMap<>(); HashMap<Integer,Integer> map2 = new HashMap<>(); Scanner sc = new Scanner(System.in); int len1 = sc.nextInt(); for (int

02-线性结构4 Pop Sequence (25 分)

老子叫甜甜 提交于 2019-12-01 20:23:19
Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and pop randomly. You are supposed to tell if a given sequence of numbers is a possible pop sequence of the stack. For example, if M is 5 and N is 7, we can obtain 1, 2, 3, 4, 5, 6, 7 from the stack, but not 3, 2, 1, 7, 5, 6, 4. Input Specification: Each input file contains one test case. For each case, the first line contains 3 numbers (all no more than 1000): M (the maximum capacity of the stack), N (the length of push sequence), and K (the number of pop sequences to be checked). Then K lines

线性列表——链式存储结构(带头节点)

夙愿已清 提交于 2019-12-01 07:09:57
#include<stdio.h> //线性列表——链式存储结构(带头节点) /* 第一个node无前趋,所以设置一个head指针指向第一个节点 最后一个节点没有直接后继,最后一个节点的指针设为“NULL” node{data,next} */ typedef int DataType; /*自定义数据类型, 先定义成int,可修改成其他类型*/ typedef struct node{ DataType data;//数据区 struct node *next;//指针域 //指向 struct node类型的指针 }Node; //struct node定义了一个数据类型、Node是该类型别名 /* 头节点:其实就是一个不存任何数据的空节点, 通常作为链表的第一个节点。对于链表来说, 头节点不是必须的,它的作用只是为了方便解决某些实际问题; 首元节点:由于头节点(也就是空节点)的缘故, 链表中称第一个存有数据的节点为首元节点。 首元节点只是对链表中第一个存有数据节点的一个称谓, 没有实际意义; */ Node *Creatlist() //返回指针的函数,没有什么特别的,只是返回值是指针 { /*建立带头节点的链表,返回头节点指针*/ Node *head=NULL;//head是头指针 Node *s=NULL,*tail=NULL;//s是节点指针,tail是尾指针

线性结构之习题选讲-ReversingLinkedList

梦想与她 提交于 2019-11-30 05:38:33
目录 一、什么是抽象的链表 二、单链表的逆转 三、测试数据 3.1 边界测试 更新、更全的《数据结构与算法》的更新网站,更有python、go、人工智能教学等着你: https://www.cnblogs.com/nickchen121/p/11407287.html 一、什么是抽象的链表 有块地方存储数据 有块地方存储指针——下一个结点的地址 二、单链表的逆转 /* c语言实现 */ Ptr Reverse(Ptr head, int K) { cnt = 1; new = head->next; old = new->next; while (cnt < K) { tmp = old->next; old->next = new; new = old; old = tmp; cnt++; } head->next->next = old; return new; } 取巧: 用顺序表存储,先排序,再直接逆序输出。 对上述取巧的解决方案: 在内存里多加几个没用的结点。 三、测试数据 在 pat测试 中,这道题的测试数据主要关心一下几点: 有尾巴不反转 有多余结点 3.1 边界测试 地址取到上下界 正好全反转 K=N全反转 K=1不用反转 最大(最后剩K-1不反转)、最小N 来源: https://www.cnblogs.com/nickchen121/p/11562533

洛谷普及组训练:线性结构

荒凉一梦 提交于 2019-11-29 23:47:46
P1996 约瑟夫问题 题目背景 约瑟夫是一个无聊的人!!! 题目描述 n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号. 输入格式 n m 输出格式 出圈的编号 输入输出样例 输入 #1复制 10 3 输出 #1复制 3 6 9 2 7 1 8 5 10 4 说明/提示 m, n \le 100m,n≤100 #include<iostream> #include<cstring> using namespace std; int main() { int que[105]; int n, m; cin >> n >> m; memset(que, 0, sizeof(que)); int count = 0; int cur = 1; for (int i = 1; count != n; i++) { if (que[i] == 1) { } else if (cur != m) { cur++; } else if (que[i] == 0 && cur == m) { cout << i << " "; cur = 1; que[i] = 1; count++; } if (i == n) { i = 0;//这里在for循环中比较特殊,置0不是置1