第五章机械CAD中常用的数据结构资料精要.ppt

第五章机械CAD中常用的数据结构资料精要.ppt

第五章 机械CAD中常用的数据结构 5.1 基本概念 5.1 基本概念 5.2 线性表 线性表是一个由n(n≥0)个数据元素a1,a2,a3...an组成的有限序列,表中的每一个数据元素,除了第一个和最后一个,仅有一个直接前驱和直接后继。线性表中数据元素的个数定义为线性表的长度。当n=0,称为空表 。 例如:光轴轴径系列值表示成线性表形式: ????????????????????? (3,6,10,14,18,...) 5.2 线性表 5.2 线性表 2.线性表的物理结构 (1)顺序存储 (2)链式存储 1)单向链 2)双向链 3)多向链 5.2 线性表 (1)线性表的顺序存储结构 5.2 线性表 线性表顺序存储结构的运算: (1)建表 static char listc[6]={‘A’,’B’,’C’,’D’,’E’}; (2)访问 char c; C=listc[2]; (3)修改 listc[2]=‘T’; (4)删除 (5)插入 5.2 线性表 5.2 线性表 (2)线性表的链式存储结构 5.2 线性表 5.2 线性表 5.2 线性表 5.2 线性表 1).链表是结构、指针相结合的-种应用,它是由头、中间、尾多个链环组成的单方向可伸缩的链表,链表上的链环我们称之为结点。 2).每个结点的数据可用-个结构体表示,该结构体由两部分成员组成:数据成员与结构指针变量成员。 3).数据成员存放用户所需数据,而结构指针变量成员则用来连接(指向)下-个结点,由于每-个结构指针变量成员都指向相同的结构体,所以该指针变量称为结构指针变量。 4).链表的长度是动态的,当需要建立-个结点,就向系统申请动态分配-个存储空间,如此不断地有新结点产生,直到结构指针变量指向为空(NULL)。申请动态分配-个存储空间的表示形式为: (struct node*)malloc(sizeof(struct node)) 在链表建立过程中,首先要建立第-个结点,然后不断地 在其尾部增加新结点,直到不需再有新结点,即尾指针指向 NULL为止。  设有结构指针变量 struct node *p,*p1,*head; head:用来标志链表头;   p:在链表建立过程中,p总是不断先接受系统动态分配的 新结点地址。   p1-next:存储新结点的地址。 链表建立的步骤: 第-步:建立第-个结点 struct node { int data; struct node *next; }; struct node *p,*p1,*head; head=p1=p=(struct node *)malloc(sizeof(struct node); 链表建立的步骤: 第二步: 给第-个结点成员data赋值并产生第二个结点 scanf(“%d”,p-data);  /*输入10*/ p=(struct node *)malloc(sizeof(struct node); 链表建立的步骤: 第三步:将第-个结点与第二个结点连接起来 p1->next=p; 链表建立的步骤: 第四步:产生第三个结点 p1=p; scanf(“%d”,p-data);/*输入8*/ p=(struct node *)malloc(sizeof(struct node); [例1]建立链表 #include stdio.h #include malloc.h #define LEN sizeof(struct node) struct node { int data; struct node *next; }; main( ) { struct node *p, *p1,* head; head=p=(struct node * )malloc(LEN); scanf(“%d”,p-data); /*头结点的数据成员*/ while(p-data!=0) /*给出0结束条件,退出循环*/ { p1=p; p=(struct node * )malloc(LEN); scanf(”%d”,p-data); /*中间结点数据成员*/

文档评论(0)

1亿VIP精品文档

相关文档