数据结构:

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。

数组建立:

数组建立是建立一个数组,包括变量名和它们的值。

C语言结构体数组的定义

所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。

结构体可以存储不同的数据类型,将他们互相联系起来。结构体数组可以连续存储多个结构体,和数组作用相似。比如想定义同一个最小外接矩形的四个坐标值,并给予这个矩形一个特征编号。当需要存储多个最小外接矩形的信息时,就需要动态申请一个结构体数组。

struct 结构体类型名{类型名 成员名;类型名 成员名;……},先声明结构体类型,再定义结构体变量名。声明结构体类型,不分配空间,定义结构体类型变量,就要分配内存空间。

扩展资料:

结构体数组指针类型:

一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址,指针变量也可以用来指向结构体数组中的元素。

1、类型一:

指向结构体变量的指针引用结构体变量中的成员。

2、类型二:

用结构体变量和指向结构体变量的指针构成链表,链表是一种常见的重要的数据结构。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。

链表中的每一个元素称为“结点”,每个结点都应包括两个部分:

一是用户需要用的实际数据,

二是下一个结点的地址。

链表中各元素在内存中的存储单元可以是不连续的。要找某一元素,可以先找到上一个元素,根据它提供的下一元素地址找到下一个元素。这种链表的数据结构,必须利用结构体变量和指针才能实现。

可以声明一个结构体类型,包含两种成员,一种是用户需要用的实际数据,另一种是用来存放下一结点地址的指针变量。

参考资料来源:百度百科—结构体类型—数组

求高手程序改错:数据结构中(c语言)如何定义一个结构数组:(节选)

#include"stdioh"

#include<malloch>

typedef struct Data

{

char num[10];

char name[20]

Int score;

}

typedef struct LNode

{

Data data;

struct LNode next;

}LinkList;

void CreatListF(LinkList &L,Data a[],int n) //头插法建表

{

LinkList s;int i;

L=(LinkList )malloc(sizeof(LinkList));

L->next=NULL;

for(i=0;i<n;i++)

{

s=(LinkList )malloc(sizeof(LinkList));

s->data=a[i];

s->next=L->next;

L->next=s;

}

}

void InitList(LinkList &L) //初始化线性表

{

L=(LinkList )malloc(sizeof(LinkList));

L->next=NULL;

}

int ListEmpty(LinkList L) //判断线性表是否为空

{

return(L->next==NULL);

}

int ListLength(LinkList L) //求线性表的长度

{

LinkList p=L;int n=0;

while(p->next!=NULL)

{

n++;p=p->next;

}

return(n);

}

void DispList(LinkList L) //输出线性表

{

LinkList p=L->next;

while(p!=NULL)

{

printf("%s",p->data->num);

printf("%s",p->data->name);

printf("%d",p->data->score);

p=p->next;

}

}

int ListInsert(LinkList &L,int i,Data e) //插入数据元素

{

int j=0;

LinkList p=L,s;

while(j<i-1&&p!=NULL)

{

j++;p=p->next;

}

if(p==NULL)return 0;

else

{

s=(LinkList )malloc(sizeof(LinkList));

s->data=e; s->next=p->next; p->next=s;

return 1;

}

}

int ListDelete(LinkList &L,int i,Data &e) //删除数据元素

{

int j=0;

LinkList p=L,q;

while(j<i-1&&p!=NULL)

{

j++;p=p->next;

}

if(p==NULL)

return 0;

else

{

q=p->next;

if(q==NULL)return 0;

e=q->data;

p->next=q->next;

free(q);

return 1;

}

}

int main()

{

Data e,a[10]={{"1","name1",91},{"2","name2",92},{"3","name3",93},{"4","name4",94},{"5","name5",95},{"6","name6",96},{"7","name7",97},{"8","name8",98},{"9","name9",99},{"10","name10",100}};

LinkList h;

InitList(h); //初始化顺序表h

CreateListR(h,&a[0],10); //依次采用尾插入法插入元素

printf("单链表为:");

DispList(h); printf("\n"); //输出顺序表h

ListDelete(h,3,e); //删除L的第3个元素

printf("删除第3个元素后单链表为:");

DispList(h); printf("\n"); //输出顺序表h

ListInsert(h,5,e); //在第5个元素位置插入e素

printf("在第5 个元素位置上插入'f'后单链表为:");

DispList(h); //输出顺序表h

return 0;

}

一维数组类模板的设计与实现建立一维数组数据结构的模板类,使一维数组中的数据元素可以是char

函数声明必须为结构体的指针例如 void D_InsertSort(ElemType L,int n);//直接排序

发现一个逻辑错误,语法没问题,suiji()中for(i=1;i<=n;i++) 应该从0开始到n-1结束

数据结构如何建立1个线性表?

队列非空时front和rear分别指向队头元素和队尾元索

插入时 front不变 rear+1

按照你的想法front=rear=n-1 front在n-1 那么就没有满足front指向队头元素A[0]

这个循环队列不是满和空front=rear的情况 ,按照题意满的时候是front在n rear在n-1

数据结构的定义

建立顺序表代码如下:

由数组元素a[0n-1]创建顺序表L。将a中的每个元素依次放入顺序表中,并将n赋值给顺序表的长度域。算法为:

void CreateList(SqList &L, ElemType a[], int n){

  int i=0, k=0;

  L = (SqList )malloc(sizeof(SqList));    //分配存储线性表的空间

  while(i<n){

      L->data[k] = a[i];

      k++; i++;

  }

  L->length = k;        //设置线性表的实际长度,设置为k(即a的长度n)

}

扩展资料

线性表的特点:

1、对于同一个线性表,其每一个数据元素的值虽然不同,但必须具有相同的数据类型;

2、数据元素之间具有一种线性的或“一对一”的逻辑关系。

3、第一个数据元素没有前驱,这个数据元素被称为开始节点;

4、最后一个数据元素没有后继,这个数据元素被称为终端节点;

5、除了第一个和最后一个数据元素外,其他数据元素有且仅有一个前驱和一个后继。

线性表的抽象数据类型描述

基本操作如下:

1、线性表的置空操作clear():将一个已经存在的线性表置为空表。

2、线性表判空操作isEmpty():判断线性表是否为空,若为空,则返回true;否则,返回为false。

3、求线性表的长度操作length():求线性表中的数据元素的个数并返回其值。

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构反映数据的内部构成,即数据由那部分构成,以什么方式构成,以及数据元素之间呈现的结构。

常见的 8 种数据结构,数组、链表、栈、队列、树、堆、图、哈希表,具体如下:

1、数组是固定大小的结构,可以容纳相同数据类型的项目。它可以是整数数组,浮点数数组,字符串数组或什至是数组数组(例如二维数组)。数组已建立索引,这意味着可以进行随机访问。

2、链表是一种顺序结构,由相互链接的线性顺序项目序列组成。因此,您必须顺序访问数据,并且无法进行随机访问。链接列表提供了动态集的简单灵活的表示形式。链表中的元素称为节点。每个节点都包含一个密钥和一个指向其后继节点(称为next)的指针。

3、堆栈是一种LIFO(后进先出-最后放置的元素可以首先访问)结构,该结构通常在许多编程语言中都可以找到,该结构被称为"堆栈"。堆栈用于表达式评估(例如:用于解析和评估数学表达式的调车场算法)。用于在递归编程中实现函数调用。

4、队列是一种FIFO(先进先出-首先放置的元素可以首先访问)结构,该结构通常在许多编程语言中都可以找到。该结构被称为"队列",因为它类似于现实世界中的队列-人们在队列中等待。

5、树是一种层次结构,其中数据按层次进行组织并链接在一起。此结构与链接列表不同,而在链接列表中,项目以线性顺序链接。在过去的几十年,已经开发出各种类型的树木,以适合某些应用并满足某些限制。一些示例是二叉搜索树,B树,红黑树,展开树,AVL树和n元树。

6、堆是二叉树的一种特殊情况,其中将父节点与其子节点的值来进行比较,并对其进行相应的排列。

7、一个图由一组有限的顶点或节点以及一组连接这些顶点的边组成。图的顺序是图中的顶点数。图的大小是图中的边数。如果两个节点通过同一边彼此连接,则称它们为相邻节点。

如果图形G的所有边缘都具有指示什么是起始顶点和什么是终止顶点的方向,则称该图形为有向图。如果图G的所有边缘均无方向,则称其为无向图。它可以在两个顶点之间以两种方式传播。如果顶点未连接到图中的任何其他节点,则称该顶点为孤立的。

8、哈希表是一种数据结构,用于存储具有与每个键相关联的键的值。此外,如果我们知道与值关联的键,则它有效地支持查找。因此,无论数据大小如何,插入和搜索都非常有效。