数据结构资料1.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构资料1

前言:这些是前几年我在大专教书时,数据结构课程中给学生写的学习例程,对于初学者有一定帮助。在此收集到一起,当个共享贴贡献给广大网友和编程爱好者。一般程序都不难也不大,并且所有例程均有较详细注释,适合自学。中间有一个“哈夫曼编码”,程序较大,希望能给大家一点启示。以下所有程序均在VC++6.0开发环境中调试通过,运行正常。有任何疑问可以“另外”发贴讨论。更多内容请访问我的博客。 自认为本贴内容充实,对网友会所很大帮助,请版主或者管理员置顶加精,谢谢。 数据结构与算法基本程序目录 一、 线性表及其操作 1、 尾插法建立一个单链表,并按顺序输出 2、 单链表的元素查找,按内容查找 3、 元素插入操作 4、 按内容元素删除操作 5、 按位置删除元素 6、 建立双向链表 7、 单链表就地逆置 8、 约瑟夫环问题 二、 栈及其操作 1、 建立堆栈 2、 进栈与出栈 3、 栈的应用,括号匹配 三、 队及其操作 1、 链队列的建立 2、 入队和出队 3、 循环队列建立 4、 循环队列的入队和出队操作 四、 串及其操作 1、 串的朴素匹配 五、 树(二叉树)及其操作 1、 二叉排序树 2、 哈夫曼编码 六、 排序 1、 冒泡排序 2、 直接选择排序法 一、线性表及其操作 //All copyright are preserved by cobby /*尾插法建立一个单链表,并按顺序输出*/ #define NULL 0 /*宏定义*/ typedef struct node /*定义结点类型的数据结构*/ { char c; /*数据域,类型为字符型*/ struct node *next; /*指针域,类型为本结构体类型*/ }*L; /*类型重定义,即Node和*L和struct node等价*/ main() { L l,p,q; /*用指针类型定义三个结点类型的指针*/ char ch; l=(L)malloc(sizeof(struct node)); /*分配内存空间*/ l-c=\0; /*为头结点的数据域赋值,值为空*/ l-next=NULL; /*指明下一个结点目前不存在*/ q=l; /*q为游动指针,链表结点的连结要用*/ printf(Input a character:\n); scanf(%c,ch); getchar(); //此语句用来吸收键盘输入的回车符,没有其它含义 while(ch!=!) /*输入!表示输入结束*/ { p=(L)malloc(sizeof(struct node)); /*为新输入的数据分配内存空间*/ p-c=ch; p-next=NULL; /*新输入的结点在链表的最后,即它的后面没有其它元素*/ q-next=p; /*q用于将上一个元素链接至当前新元素*/ q=p; /*q自己移到当前最后一个元素,以备继续链接所用*/ scanf(%c,ch); getchar(); } q=l; /*输入整个链表前,先将q移到链表头,l一般不动*/ while(q-next!=NULL) /*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/ { printf(%c--,q-next-c); /*q-next-c表示q所指向的下一个元素的数据*/ q=q-next; /*完成该元素的输出后,q移至下一个元素重复输出操作*/ } } //All copyright are preserved bycobby /*单链表的元素查找,按内容查找*/ #define NULL 0 /*宏定义*/ typedef struct node /*定义结点类型的数据结构*/ { char c; /*数据域,类型为字符型*/ struct node *next; /*指针域,类型为本结构体类型*/ }*L; /*类型重定义,即Node和*L和struct node等价*/ main() { L l,p,q; /*用指针类型定义三个结点类型的指针*/ char ch; int n; l=(L)malloc(sizeof(struct node)); /*分配内存空间*/ l-c=\0; /*为头结点的数据域赋值,值为空*/ l-next=NULL; /*指明下一个结点目前不存在*/ q=l; /*q为游动指针,链表结点的连结要用*/ printf(Input a character:\n); scanf(%c,ch); getchar(); while(ch!=!) /*输入!表示输入结束*/ { p=(L)malloc(sizeof(struct node)); /*为新输入的数据分配内存空间*/ p-c=ch; p-next=NULL; /*新输入的结点在链表的最后,即它的后面没有其它元素*/ q-

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档