- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)