数据结构定义怎么写(数据结构基本概念)

什么是数据结构?

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

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

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

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

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

数据结构的名词解释?

数据结构是计算机存储知识数据的方式,数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

数据结构研究的是数据的逻辑结构和数据的物理结构,以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的类型。

用C语言实现 图的邻接表和邻接矩阵数据结构的定义、创建;图的深度优先遍历、广度优先遍历。

  • 用C语言,百度到的程序运行不正确,最好亲自运行一下再贴过来,求大神相助!
  • c语言临接表 代码提供

数据结构代码栈的基本操作 我的代码为什么入栈时明明定义一个变量却要输入两个值,而且只打印出一个?

  • #includeiostreamusing namespace std;#includestdlib.htypedef int elemtype,status;class sqstack{private: elemtype *base; elemtype *top; int stacksize; int length;public: status init(sqstack&); status gettop(sqstack ,elemtype &); status push(sqstack& ,elemtype ); status pop(sqstack&,elemtype&); status clearstack(sqstack&); status destory(sqstack&); status getlength(sqstack); status stackempty(sqstack); status terverse(sqstack s);};status sqstack::init(sqstack&s){ s.base=(elemtype*)malloc(100*sizeof(sqstack)); if(!s.base) return -2; s.top=s.base; s.stacksize=100; length=0; return 1;}status sqstack::gettop(sqstack s ,elemtype &e){ if(s.top==s.base) return -1; e=*(s.top-1); return 1;}status sqstack::clearstack(sqstack&s){ s.top=s.base; s.top=0; return 1;}status sqstack::destory(sqstack&s){ s.base=s.top=NULL; s.stacksize=0; s.top=0; return 1;}status sqstack::push(sqstack&s,elemtype e){ if(s.top-s.base=s.stacksize) { s.base=(elemtype*)realloc(s.base,(100+10)*sizeof(sqstack)); if(!s.base) return -2; s.top=s.base+s.stacksize; s.stacksize=s.stacksize+10; } *s.top++=e; s.length++; return 1;}status sqstack::pop(sqstack&s,elemtype &e){ if(s.top==s.base) return -1; e=*–s.top; s.length–; return 1;}status sqstack::getlength(sqstack s){ return s.length;}status sqstack::terverse(sqstack s){ elemtype e; while(!s.stackempty(s)) { pop(s,e); printf("%d ",e); } return 1;}status sqstack::stackempty(sqstack s){ if(s.top==s.base) return 1; else return 0;}void main(int argc, char* argv[]){ sqstack a; a.init(a); elemtype e; scanf("%d ",&e); a.push(a,e); a.terverse(a);}
  • 把scanf后面的空格去掉即可

定义数据结构,编写算法求一维整型数组中最小的两个元素值,并输出他们的位置。请帮我完善程序。

  • #includestdio.h#includestdlib.h#includestring.h#define maxsize 1000Status swap(min1,min2){int temp;temp=min1;min1=min2;min2=temp;}int main{int n,i; int min1,min2,a[maxsize+1];for(i=0;in;i++)scanf("%d",&a[i]);min1=0;min2=1;if(a[min1]a[min2])swap(min1,min2);for(i=2;in;i++){if(a[i]a[min2]){min2=i;if(a[min1]a[min2])swap(min1,min2);}}printf("最小两数的下标分别为:%d,%dn",min1,min2); printf("最小两数的值分别为:%d,%dn",a[min1],a[min2]);return 0;}
  • main函数里的变量n没有赋初值。

为什么可以用抽象数据类型定义一个完整的数据结构

  • 抽象数据类型描述了数据的逻辑结构和抽象运算,通常可以用数据对象,数据关系,基本害厂愤断莅登缝券俯猾操作集这样的三元组来表示,从而构成了一个完整的数据结构定义。可是数据结构不是包括三方面内容,逻辑结构,存储结构,数据运算,抽象数据类型少了存储结构怎么能定义
  • 内容是定义的阐发而已。存储结构只有在计算机内才有意义,它不过是逻辑结构的映射而已,所以,把存储结构算上就是重复了,没有意义。逻辑结构包含数据对象,数据关系,数据运算包含数据对害厂愤断莅登缝券俯猾象,数据关系,基本操作集,它们不过是这三个元素的复合而已。就好比生产力构成要素,劳动者,劳动工具,劳动对象,然后将劳动工具和劳动对象归为劳动资料一样。

数据结构中单链表的定义用C语言表述,不是很明白

  • typedef char DataType; 假设结点的数据域类型为字符typedef struct node{ 结点类型定义 DataType data; 结点的数据域 struct node *next;结点的指针域 }ListNode; 上面是单链表节点描述,我对这种写法有点不理解,在大括号前面是用typedef struct node,这里node表示节点名称,为什么大括号里面又冒出node数据类型的*next, 这就好比我定义了一个类,类名为MyClass,类的一个私有成员变量时 MyClass myClass;我对这种写法很不理解,MyClass还没定义出来,那他里面的变量myClass不更没意义了?
  • 它只是一个指针 编译器知道它的大小就够了 你后面说的就不行了

链式存储队列的数据结构(逻辑结构+存储结构)分析、链式存储队列的基本C语言结构体分析与定义

  • 如题。。软件技术基础大作业的报告,求稿课程设计报告应包含以下内容:链式存储队列的数据结构(逻辑结构+存储结构)分析、链式存储队列的基本C语言结构体分析与定义、链式存储队列各基本操作的功能及实现分析、主程序设计分析、心得等,如有参考文献,要求附参考文献
  • 网上一大堆,建议百度!

数据结构用C++实现,定义两个栈,想要实现一个栈出栈立刻在另一个栈入栈怎么实现?

  • 我这样写错在哪里,写一个简单的代码给我讲一下吧,谢了template class type type LinkStacktype::Pop( )出栈的每一个元素进车库栈{ DseqStackcarint C(100); Nodetype *p; type x;  if (top==NULL) cout"栈空"endl; x=top-data;  p=top;  top=top-next;  C.Push(x);取出栈的x入另个一车库栈(顺序栈) N=N+1; return x;}
  • 实现一个栈出栈

数据结构 指针未定义 该怎么定义。。。

  • #include stdio.h#includestdlib.h int compare(int x,int y);void padd(int startA,int finishA,int startB,int finishB,int *startD,int *finishD,int avail,int *p);void attach(intcount,int avail,int *p);int main(void){int i,j;int avail=16;int *startD;int *finishD;int startA=0;int finishA=4;int startB=5;int finishB=15;int *p=(int *)malloc(sizeof(int)*100);printf("第一列数:"); for(i=0;i4;i++) scanf("%d",&p[i]); printf("第二列数:"); for(j=5;j15;j++) scanf("%d",&p[j]); padd(startA,finishA,startB,finishB,startD,finishD,avail,p); printf("输出第三列数:"); for(i=16;i31;i++) printf("",&p[i]); system("pause"); return 0; }int compare(int x,int y){ if (xy) return -1; else if (x==y) return 0; else return 1;} void padd(int startA,int finishA,int startB,int finishB,int *startD,int *finishD,int avail,int *p){ int count; *startD=avail; while (startA=finishA &&startB=finishB) switch(compare(p[startA],p[startB])){ case -1: attach(p[startB],avail,p); startB++; break; case 0: count=p[startB]; attach(p[startB],avail,p); startA++; startB++; break; case 1: attach(p[startA],avail,p); startA++; } for(;startA=finishA;startA++) attach(p[startA],avail,p); for(;startB=finishB;startB++) attach(p[startB],avail,p); *finishD = avail-1;}void attach(int count,int avail,int *p){ p[avail]=count;}
  • 我不知道你想问什么,但是我这里编译和链接都没有错误

数据结构中的数组定义是什么?

  • 查教学和网上资料还是没搞明白 就说一维数组 可以肯定是一段连续的存储空间,这段空间 既可以存线性结构也可以存树型结构(比如完全二叉树),但都说数组是线性结构,存储其他结构的时候就不是数组了吗?
  • #include stdio.h 标准头文件,提供宏va_start,va_arg,va_end,用于存取变长参数表#include stdlib.h#include stdarg.h#define TRUE 1#define FALSE 0#define ERROR 0#define OVERFLOW -1#define OK 1#define INFEASIBLE -2#define MAX_ARRAY_DIM 8 假设数组最大维数为8#define UNDERFLOW -1typedef int Status;数组的物理存储结构typedef struct{ElemType *base; 数组元素基址,有InitArray分配int dim; 数组维数int *bounds; 数组维数基址int *constants; 数组映像函数基址}数组的基本操作Status InitArray(Array &A,int dim,……){若维数dim和随后的各维长度合法,则构造相应的数组A,并返回OK
版权声明