ImageVerifierCode 换一换
格式:DOCX , 页数:58 ,大小:28.13KB ,
资源ID:8631369      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8631369.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构与算法基本程序.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构与算法基本程序.docx

1、数据结构与算法基本程序数据结构与算法基本程序目录一、线性表及其操作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 cob

2、by/*尾插法建立一个单链表,并按顺序输出*/#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(L);/*分配内存空间*/l-c=0;/*为头结点的数据域赋值,值为空*/l-next=NULL;/*指明下一个结点目前不存在*/q=l;/

3、*q为游动指针,链表结点的连结要用*/printf(Input a character:n);scanf(%c,&ch);getchar();/此语句用来吸收键盘输入的回车符,没有其它含义while(ch!=!)/*输入!表示输入结束*/p=(L)malloc(sizeof(L);/*为新输入的数据分配内存空间*/p-c=ch;p-next=NULL;/*新输入的结点在链表的最后,即它的后面没有其它元素*/q-next=p;/*q用于将上一个元素链接至当前新元素*/q=p;/*q自己移到当前最后一个元素,以备继续链接所用*/scanf(%c,&ch);getchar();q=l;/*输入整个链

4、表前,先将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

5、;/*指针域,类型为本结构体类型*/*L;/*类型重定义,即Node和*L和struct node等价*/main()L l,p,q;/*用指针类型定义三个结点类型的指针*/char ch;int n;l=(L)malloc(sizeof(L);/*分配内存空间*/l-c=0;/*为头结点的数据域赋值,值为空*/l-next=NULL;/*指明下一个结点目前不存在*/q=l;/*q为游动指针,链表结点的连结要用*/printf(Input a character:n);scanf(%c,&ch);getchar();while(ch!=!)/*输入!表示输入结束*/p=(L)malloc(si

6、zeof(L);/*为新输入的数据分配内存空间*/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;/*完成该元素

7、的输出后,q移至下一个元素重复输出操作*/*-以上为建立一个单链表-*/printf(nInput a character you wanna findn);scanf(%c,&ch);printf(nthe character you wanna find is %cn,ch);q=l-next;/*q移至头结点的后一个元素,即实际第一个数据点*/n=1;/位置计数器while(q!=NULL)/*若q不为空,即该结点存在*/if(q-c=ch)/*字符匹配*/printf(character found in position %dn,n);q=q-next;/*移至下一个元素继续查找*/

8、n+;/All copyright are preserved bycobby/*元素插入操作*/#define NULL 0/*宏定义*/typedef struct node/*定义结点类型的数据结构*/char c;/*数据域,类型为字符型*/struct node *next;/*指针域,类型为本结构体类型*/Node,*L;/*类型重定义,即Node和*L和struct node等价*/main()L l,p,q;/*用指针类型定义三个结点类型的指针*/char ch;int pos,n;l=(L)malloc(sizeof(Node);/*分配内存空间*/l-c=0;/*为头结点的

9、数据域赋值,值为空*/l-next=NULL;/*指明下一个结点目前不存在*/q=l;/*q为游动指针,链表结点的连结要用*/printf(Input a character:n);scanf(%c,&ch);getchar();while(ch!=!)/*输入!表示输入结束*/p=(L)malloc(sizeof(Node);/*为新输入的数据分配内存空间*/p-c=ch;p-next=NULL;/*新输入的结点在链表的最后,即它的后面没有其它元素*/q-next=p;/*q用于将上一个元素链接至当前新元素*/q=p;/*q自己移到当前最后一个元素,以备继续链接所用*/scanf(%c,&c

10、h);getchar();q=l;/*输入整个链表前,先将q移到链表头,l一般不动*/while(q-next!=NULL)/*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/printf(%c-,q-next-c);/*q-next-c表示q所指向的下一个元素的数据*/q=q-next;/*完成该元素的输出后,q移至下一个元素重复输出操作*/*以上为建立一个单链表*/printf(Input the character and its position, such as s,3nn);scanf(%c,%d,&ch,&pos);q=l;n=1;while(n!=pos&q-next

11、!=NULL)/*未找到插入位置,且后面还有元素*/q=q-next;n+;/*退出循环后,要么找到插入位置,要么表已到最后,输入的插入位置过大*/if(nc=ch;p-next=q-next;q-next=p;/*操作完成,然后输出新表*/q=l;/*输入整个链表前,先将q移到链表头,l一般不动*/while(q-next!=NULL)/*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/printf(%c-,q-next-c);/*q-next-c表示q所指向的下一个元素的数据*/q=q-next;/*完成该元素的输出后,q移至下一个元素重复输出操作*/All copyright

12、are preserved bycobby/*按内容元素删除操作*/#include#include#define NULL 0/*宏定义*/typedef struct node/*定义结点类型的数据结构*/ char c;/*数据域,类型为字符型*/struct node *next;/*指针域,类型为本结构体类型*/Node,*L;/*类型重定义,即Node和*L和struct node等价*/main()L l,p,q;/*用指针类型定义三个结点类型的指针*/char ch;int n;l=(L)malloc(sizeof(Node);/*分配内存空间*/l-c=0;/*为头结点的数据

13、域赋值,值为空*/l-next=NULL;/*指明下一个结点目前不存在*/q=l;/*q为游动指针,链表结点的连结要用*/printf(Input a character:n);scanf(%c,&ch);getchar();while(ch!=!)/*输入!表示输入结束*/p=(L)malloc(sizeof(Node);/*为新输入的数据分配内存空间*/p-c=ch;p-next=NULL;/*新输入的结点在链表的最后,即它的后面没有其它元素*/q-next=p;/*q用于将上一个元素链接至当前新元素*/q=p;/*q自己移到当前最后一个元素,以备继续链接所用*/scanf(%c,&ch)

14、;getchar();q=l;/*输入整个链表前,先将q移到链表头,l一般不动*/while(q-next!=NULL)/*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/printf(%c-,q-next-c);/*q-next-c表示q所指向的下一个元素的数据*/q=q-next;/*完成该元素的输出后,q移至下一个元素重复输出操作*/*以上为建立单链表*/printf(input the character you wanna deletenn);scanf(%c,&ch);printf(the element you wanna delete is %cnn,ch);q=l-

15、next;p=l;n=1;while(q!=NULL&q-c!=ch)p=q;q=q-next;n+;/*退出循环时可能找到指定元素,也可能表读完,需要进一步判断*/if(q=NULL)printf(element not found, delete failednn);elsep-next=q-next;q=l-next;/*输入整个链表前,先将q移到链表头,l一般不动*/while(q!=NULL)/*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/printf(%c-,q-c);/*q-next-c表示q所指向的下一个元素的数据*/q=q-next;/*完成该元素的输出后,q移

16、至下一个元素重复输出操作*/All copyright are preserved bycobby/*按位置删除元素*/#define NULL 0/*宏定义*/typedef struct node/*定义结点类型的数据结构*/char c;/*数据域,类型为字符型*/struct node *next;/*指针域,类型为本结构体类型*/Node,*L;/*类型重定义,即Node和*L和struct node等价*/main()L l,p,q;/*用指针类型定义三个结点类型的指针*/char ch;int pos,n;l=(L)malloc(sizeof(Node);/*分配内存空间*/l-

17、c=0;/*为头结点的数据域赋值,值为空*/l-next=NULL;/*指明下一个结点目前不存在*/q=l;/*q为游动指针,链表结点的连结要用*/printf(Input a character:n);scanf(%c,&ch);getchar();while(ch!=!)/*输入!表示输入结束*/p=(L)malloc(sizeof(Node);/*为新输入的数据分配内存空间*/p-c=ch;p-next=NULL;/*新输入的结点在链表的最后,即它的后面没有其它元素*/q-next=p;/*q用于将上一个元素链接至当前新元素*/q=p;/*q自己移到当前最后一个元素,以备继续链接所用*/

18、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移至下一个元素重复输出操作*/*以上为建立单链表*/printf(Input the positionn);scanf(%d,&pos);p=l;n=1;while(p-next!=NULL&n!=pos)p=p-next;n+;/*退出循环后,可能找

19、到删除的元素位置,可能表读完,需要进一步判断*/if(n=pos)/*删除位置找到,删除该位置上的元素*/p-next=p-next-next;/free(p);elseprintf(incorrect position, delete failedn);q=l;/*输入整个链表前,先将q移到链表头,l一般不动*/while(q-next!=NULL)/*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/printf(%c-,q-next-c);/*q-next-c表示q所指向的下一个元素的数据*/q=q-next;/*完成该元素的输出后,q移至下一个元素重复输出操作*/建立双向链表#

20、include#include#include#define NULL 0typedef struct dlnodechar ch;struct dlnode *pri,*next;dnode,*dl;main()dl l,p,q;char c;l=(dl)malloc(sizeof(dnode);l-ch=0;l-next=NULL;l-pri=NULL;q=l;printf(输入字符建立双向链表n);scanf(%c,&c);getchar();while(c!=!)p=(dl)malloc(sizeof(dnode);p-ch=c;p-pri=q;p-next=NULL;q-next=p;q=p;scanf(%c,&c);getchar();q=l;while(q-next!=NULL)q=q-next;printf(%c-,q-ch);printf(n);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1