什么是数据结构?有关数据结构的讨论涉及哪三个方面?(大二数据结构到底学了个啥)

什么是数据结构?

数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。记为:数据结构Data_Structure=(D,R)其中D是数据元素的集合,R是该集合中所有元素之间的关系的有限集合。

数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。

数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构是数据存在的形式。

数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。数据结构主要研究数据的各种逻辑结构和存储结构,以及对数据的各种操作。

因此,主要有三个方面的内容:数据的逻辑结构;数据的物理存储结构;对数据的操作(或算法)。通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。

请问在大学里,数据结构这门课都学什么。请举例说明?

大学如果不是计算机专业,数据结构一般都是选修课,我们学的是数据结构和算法分析,是英文的,data structures and algorithm,主要是lists,stacks,queues,trees,graph algorithm,sorting and selection algorithm。

其中最主要的是lists(线性表),stacks(栈),queues(队列)还有trees(主要二叉树,树的递归和非递归遍历)。

数据结构问题,请问如何解决,需要代码?

  • 使用顺序存储实现线性表:
  • 百度搜: 队列的C语言实现 – 开源中国社区2 哈夫曼编码的代码较长,所以还是你自己去网上搜:哈夫曼编码 – 开源中国社区,或者哈夫曼编码详解就能。。。

在单链表中,已知pqs是指向节点的指针,且q是p的前驱节点,若q和p之间插入s,则需执行()?,

  • 为什么是b呀不应该是s-next=q-next;q-next=s;按b的话p不就丢失了吗?
  • Q-next表示存储在节点中的指针,用来指向一个节点。原来的连接关系是q-next=p,也就是说Q中存储的指针的值是P,也就是Q指向P,比如原来的队列P在Q后面,现在我们想在它们之间插入一个S。我们需要做的是把P和Q的联系变成P、S和Q的联系,让P先指向S,即Q- Next = S;然后让s指向q,即s- next = p 。扩展:单链表链接存储方式以链接方式存储的线性表简称为链表。链表的具体存储如下:①用一组任意的存储单元存储线性表的节点(这组存储单元可以是连续的,也可以是不连续的)②链表中节点的逻辑顺序和物理顺序不一定相同。为了正确表示节点之间的逻辑关系,在存储每个节点的值的同时,需要存储指示其后继节点的地址(或位置)信息(称为指针或链接)。链式存储是最常用的存储方法之一,不仅可以用来表示线性表,还可以用来表示各种非线性数据结构。头指针头和末端节点的单链表中每个节点的内存地址都存放在它的前任节点的下一个字段中,但是起始节点没有前任,所以头指针头应该设置为指向起始节点。链表由头指针唯一确定,单链表可以以头指针命名。终端节点没有后继,所以终端节点的指针字段为空,即NULL。来源:百度百科-单链表来源:百度百科-节点Q引用的节点是P引用的节点的前任;根据上面的意思,Q是P的正向接触点但不是直接的正向接触点。执行q- next = s;s- next = p;它可以在Q和P之间插入S节点,但Q和P之间的节点已被删除。答案应该是q- next = s,s-next = p,q引用的节点是p引用的节点的前身,所以q在p前面,你插入的S节点应该只有一个。为什么要把S- next赋值给p-next?Q-next表示存储在节点中的指针,用来指向一个节点。原来的连接关系是q-next=p,也就是说Q中存储的指针的值是P,也就是Q指向P插入的意思。比如原来的队列P在Q后面,现在要在其中插入一个S。需要做的是把原来P和Q之间的联系转换成P、S和Q之间的联系,那么让S指向Q,即s- next = p,不知道这个答案是否令人满意?答案是错的,不是S一开始就没进这些链表吗?怎么能赋给q-next?答案是s = q- next;p = p- next;s- next = p;Q引用的节点是P引用的节点的前任节点,所以Q在P前面,所以Q的下一个节点赋给s(s=q-next),但是由于S进入,P的节点会后移一位,所以p=p-next,最后S的下一位会和P连接,所以S- next = P。

知识

excel COLUMN提取列数为数字,怎么通过数字得到列数?,

  • COLUMN(B1)=2,COLUMN(AA1)=27,那我怎么通过2得到B,或者27得到AA
  • 你是想得到这个列单元格单元格数据值还是仅仅只是想得到B、AA这样的文本呢!最好把数据结构格式和目标效果要求说清楚,可以直接给你公式吧

知识

请问软件工程专业掌握了CC++数据结构数据库操作系统,但是《软件工程》这本书不读学校的课本,自己买书?

  • 请问《软件工程》课本是自己买的而不是学校发的课本,这样的软件工程好不好?跪求读书高手批准这样就好了不是学校课本没关系,读书高手指点一下。。。十分感谢.
  • 什么书无所谓的,关键是要讲好并学好。一个专业 ,无论是任何学校任何书本,其内容是一样的,只是表述不同。所以,听课是一方面,看指定教材是一方面,看参数书籍也是一方面。到图书馆看看,软件工程的书有很多很多,都可以参考 。

请问:不学数据结构能学算法吗?

  • 课程推荐里有显示,需要先学“数据结构”和“离散数学”再学“算法”,但这两门课都满员了,只好在两门课都没学的情况下,抱着试试看的心态选了“算法",结果发现听不懂。要不要这学期直接让“算法”挂掉,等下学期把“数据结构”和“离散数学”学完,再学算法呢?
  • “数据结构”和“离散数学”是基础,但是也不用一定要放弃,可以先试试自学数据结构,尽力而为

业余爱好自学电脑编程,熟练掌握了CC++数据结构数据库操作系统,而且胡乱读了两本《软件工程》?

  • 请问一下读书专家我这样自学编程算是好了吗?跪求读书高手批准这样读。
  • 能编啥软件不?光学基础的东西没用的,关键在于你能做出来什么东西,这才是融会贯通

数据结构?

  • 有一个二维数组A[0:8,1:5],每个数组元素用相邻的4个字节存储,存储按字节编址,假设存储数组元素A【0,1】的第一个字节的地址是0,那么存储数组最后一个元素的第一个字节的地址是多少?若按行存储,则A【3,5】和【5,3】的第一个字节地址是多少?176 76 108这是答案这个76咋算出来的?
  • 这是一个带有下标声明的二维数组,低维一共5个元素,高维为9个,一共5*9=45个元素。每个元素4字节,那么总共为45*4=180字节。那么第一个字节的地址为0的话最后一个字节的地址为179.最后一个元素的第一个字节为179-3=176如果按行存储,那么顺序为A[0,1] A[0,2] A[0,3] A[0,4] A[0,5]A[1,1] A[1,2] A[1,3] A[1,4] A[1,5]A[2,1] A[2,2] A[2,3] A[2,4] A[2,5]…A[8,1] A[8,2] A[8,3] A[8,4] A[8,5]如果要想计算A[a,b]是第几个元素,那么公式为a*5+b而这个元素共有四个字节,那么第一个字节的地址为a*5+b-4A【3,5】是元素中的第3*5+5=20个,其第一个元素的地址为20*4-4=76A【5,3】是元素中的第5*5+3=28个,其第一个元素的地址为28*4-4=108

数据结构 单链表?

  • 计算题第一题应该怎么做具体步骤是什么样的
  • 您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!展开全部head=(LNode *)malloc(sizeof(LNode));这一句不要,没啥用处,除非你head指向的节点也就是第一个节点的data不需要数据head-next=NULL;这里修改为head=NULL;让head先指向NULL,也就是没有节点其实这个可以不要,再主函数中,先让链表是空链表即可(即让head=NULL)head-data=data;head-next=p-next;head-next=p;关键在这里你仔细考虑一下,一般来说头插法的head只是一个指针,不要对head指向的那个节点操作,对p操作完成后,让head指过去即可所以修改为p-data=data; 赋值过去,因为你现在申请了p的内存空间p-next=head; 把head指向的那个节点连接到p的后面,这样完成头插 这是head没有用了,p成为链表的头指针head=p; head再指向这个链表的头部,也就是p指向的节点,为下一次循环做准备head=Createlist(head);链表初始化主函数中这样不太好,建议不要重名非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!

数据结构C语言版 一道习题 部分代码已经写好 要求完善 实现题目要求 十分感谢! 题目如下

  • 用邻接表实现图的存储,并实现图的深度优先遍历。#includestdio.h#includestdlib.h #define MAX_VERTEX_NUM 20typedef struct ArcNode{int adjvex;ArcNode *nextarc;InfoType *info;}ArcNode; typedef struct VNode{VertxType data;ArcNode *firstarc;}VNode,AdList[MAX_VERTEX_NUM]; typedef struct{AdList vertices;int vexnum,arcnum;int kind;}ALGraph; typedef char VertexData;typedef int EdgeData; typedef struct node{int dest;EdgeData cost;struct node *link;}EdgeNode; typedef struct{VertexData data;EdgeNode *firstAdj;}VertexNode; typedef struct{VertexNode VexList[NumVertices];int n,e;}AdjGraph; void Graph_Traverse(AdjGraph G){int *visited=new int [NumVertices];for(int i=0;iG.n;i++)visited[i]=0;for(int i=0;iG.n;i++)if(!visited[i]) DFS (G,i,visited);delete[]visited;} void DFS (AdjGraph G,int v,int visited[]){coutGetValue(G,v);int w=GetFirstNeighbor(G,v);while(w!=-1){if(!visited[w]) DFS (G,v,w);}}
  • 您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!在 链表 list 中删除 值为 value的表项。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!

我读大学二年级,今年19岁,男生。大学所学的数据结构(C语言版)是不是国家机密,我怕泄露国家机密?

  • 有懂法律的最好告诉我。各位知道的网友,你们的看法是什么??悬赏值550各位网友,快点回答。
  • 这个不是国家机密。如果是国家机密,也不能公开去学。
版权声明