- 1、本文档共99页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]机械CADCAM技术第二章
1.数据——描述客观事物的数值、字符或其它物理符号。 2.数据元素——数据的抽象的基本单元,可能是一个数,一个字符,一个记录,甚至其他更加复杂的数据。 3.数据结构——数据之间的结构关系, 逻辑结构和物理结构。 数据的逻辑结构只考虑数据之间的逻辑关系,它独立于数据的存储介质,通常所说的数据结构是指数据的逻辑结构。 数据类型是程序设计语言提供的变量类别。 线性表中的数据元素可能是各种各样的,但同一表中数据元素的类型必须是相同的。除了第一个和最后一个数据元素外,每个数据元素有且只有一个直接前趋,有且只有一个直接后继。线性表中数据元素的个数定义为线性表的长度。 链表的存储单元可以是连续的,也可以是不连续的,不连续的链表存储单元可以通过指针来实现线性表中各数据元素之间的逻辑关系。 特点 不需要事先知道一张表的长度 增删操作方便等优点 1).单向链表 节点定义 typedef struct linknode { Elem Type data; struct linknode *link; }node; # include<stdio.h> /*定义结点的数据结构*/ struct link {char data;/*数据域*/ struct link *next;/*指向直接后继的指针*/ }*head; /*链头结点指针,是全局变量*/ /*函数说明*/ void create(void);/*建立一个单向链表*/ char visit(int);/*访问第 i个数据元素*/ int search(char);/*按数据元素的值查找结点*/ void delete(int);/*删除第 i个结点*/ void insert(char,int);/*在第 i个数据元素后插入新的数据元素*/ /*主函数*/ main() { int;char c; chareate();/*建立一个单向链表*/ c=visit(3);/*访问第三个数据元素*/ i=search(’C’);/*查找数据元素为’C’的结点*/ delete(3);/*删除第 3个结点*/ insert(‘T’,3);/*在第 3个数据元素后插入一个新的数据元素*/ } 单向链表结点的指针域只有一个,通常存放直接后继的地址。第一个元素的地址需要专门存放在指定的指针型变量中,或者设置一个与链表结点相同的一个结点,它的数据域可以是空的,也可以存放表长等附加信息,指针域存放第一个元素的地址。 l)建立单向链表 首先定义结点的数据类型,它有两个成员:data和next。data用来存放数据元素本身,这儿是字符型的; next存放该结点直接后继的地址,所以它是指针型的,而且是指向字符型变量的指针。 void create(void) /*建立一个单向链表*/ {int i, LEN=5; /*链表的初始长度为5*/ struct link *node, *temp; for(i=0;i LEN;i ++) {node=(struct link *) malloc (sizeof (struct link)) node - data=‘A’+I; node -next=Null; if (i==0) head=temp=node; else {temp -next=node; temp=node; } } } 2)访问 链表的逻辑顺序与存储顺序无关,如果访问第i个元素,首先通过链头结点head找到第1个结点的地址,再根据这个结点的指针域找到下一结点的地址,直至找到第i 个 结点的地址,再访问这个结点的数据域。 3)查找或输出 在链表中查找或输出是否有指定的数据元素,若有就输出第一次出现这个数据元素的逻辑位置,否则输出没有这个数据元素的信息。 4)修改 修改第i个数据元素的值时,首先找到这个数据元
文档评论(0)