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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

算法与数据结构程序实例.docx

1、算法与数据结构程序实例算法与数据结构0_双向循环链表/*#*/*main.c */*= 工程名称: Link 组成文件: main.c link.c link.h 功能描述: 链表综合练习 程序分析: 完成链表建立,结点删除,结点插入等操作 维护记录: 2010-09-12 v1.1 add by dxh=*/#include #include #include link.hvoid display(void) printf(/*/n); printf(/* 1: 创建链表 */n); printf(/* 2: 插入链表 */n); printf(/* 3: 删除链表 */n); printf

2、(/* 4: 搜索链表 */n); printf(/* 5: 输出链表 */n); printf(/* 0: 退出链表 */n); printf(/*/n);int main(void) TYPE *head = NULL,*Lsearch = NULL,*ins = NULL; int delnum = 0,searnum = 0; int menu = 0,link_num = 0; while(1) display(); scanf(%d,&menu); switch(menu) case CREATE_CMD : printf(input create link Number:n);

3、scanf(%d,&link_num); head = creat(link_num); print(head); /打印创建的链表 break; case INSERT_CMD : ins = (TYPE *)malloc(sizeof(TYPE); printf(insert Number and Age:n); scanf(%d%d,&ins-num,&ins-age); head = insert(head,ins); print(head); /打印插入节点后的链表 break; case DELETE_CMD : printf(input delete Number:n); sca

4、nf(%d,&delnum); head = delete(head,delnum); print(head); /打印删除一个节点后的链表 break; case SEARCH_CMD : printf(input search Number:n); scanf(%d,&searnum); Lsearch = search(head,searnum); print(Lsearch); /从搜索到的节点开始打印 break; case PRINT_CMD : print(head); /从搜索到的节点开始打印 break; case EXIT_CMD : return 0; break; de

5、fault: printf(请按提示菜单,输入有效数据进行操作!n); break; /*link.h */#ifndef _linker_h_#define _linker_h_#include #define EXIT_CMD 0#define CREATE_CMD 1#define INSERT_CMD 2#define DELETE_CMD 3#define SEARCH_CMD 4#define PRINT_CMD 5typedef struct node int num; int age; struct node *prior; struct node *next;TYPE;ext

6、ern TYPE * creat(int n);extern TYPE * delete(TYPE * head,int num);extern TYPE * insert(TYPE * head,TYPE * pi);extern TYPE * search(TYPE * head,int num);extern void print(TYPE * head);#endif/*Link.c*/#include #include #include link.h/=/ 语法格式: creat(int n)/ 实现功能: 创建一个具有n个节点的链表,并对其值进行初始化/ 参数: n: 链表的长度,

7、即节点的个数/ 返回值: 所创建链表的首地址/=TYPE * creat(int n) TYPE *head = NULL,*ins; int i; for(i=0;inum,&ins-age); head = insert(head,ins); return(head);/=/ 语法格式: delete(TYPE * head,int num)/ 实现功能: 删除给定序号所指向的节点/ 参数: *head:待删除链表/ num: 所需删除的节点/ 返回值: 删除指定节点后的新链表首址/=TYPE * delete(TYPE * head,int num) TYPE *pf,*pb = hea

8、d; if(head=NULL) printf(nempty list!n); goto end; while (pb-num!=num & pb-next!=head) pf=pb; pb=pb-next; if(pb-num=num) if(pb=head) if (pb-next = head & pb-prior = head) /如果只有一个节点 free(pb); head = NULL; goto end; pb-next-prior = head-prior; /头节点指向尾 head-prior-next = pb-next; /尾节点指向头 head=pb-next; /得

9、到新头节点地址 else pf-next = pb-next; pb-next-prior = pf; free(pb); printf(The node is deletedn); else printf(The node not been found!n);end: return head;/=/ 语法格式: insert(TYPE * head,TYPE * pi)/ 功能: 将新申请的节点加入到指定链表中,并按num从小到大排序/ 参数: *head:待插入链表/ * pi:带插入节点/ 返回值: 插入指定节点后的新链表首址/=TYPE * insert(TYPE * head,TYP

10、E * pi) TYPE *pb=head ,*pf; if(head=NULL) /如果为空就建立,空间在传入前申请好 head=pi; pi-prior=head; pi-next=head; else while(pi-num pb-num)&(pb-next!=head) pf=pb;/pf指向前,pb指向后 pb=pb-next; /节点后移 /找到一个比插入值大的节点,然后插在它的前面 if(pi-num num) /找到所要插入节点位置,插到pb的前面 if(head=pb) /在第一结点之前插入 pi-next = pb; pi-prior = head-prior; pb-p

11、rior = pi; head-prior-next = pi; /尾节点 head=pi; /保存头节点 else pf-next = pi; /在中间位置插入 pb-prior = pi; pi-next = pb; pi-prior = pf; else /只有pb-head为空才会成立 pb-next = pi;/在表末插入 pi-next = head; pi-prior = pb; head-prior = pi; /头始终指向新插入的节点 return head;/=/ 语法格式: search(TYPE * head,int num)/ 实现功能: 搜索给定序号所指向的节点/

12、参数: *head:待搜索链表/ num: 按所需进行节点搜索/ 返回值: 搜索到的节点首址/=TYPE * search(TYPE * head,int num) TYPE *pb=head; if(head = NULL) return head; while(pb-num != num)&(pb-next!=head) pb=pb-next; /节点后移 if (pb-num = num) return pb; else return head;/=/ 语法格式: print(TYPE * head)/ 功能: 打印指定链表中的全部节点数据,由于循环双向表没有头节点,/每个节点性质完全一

13、样,只要给出任意节点就可以遍历/ 参数: *head:待打印的链表首址/ 返回值: 无/=void print(TYPE * Lnode) TYPE * pb = Lnode; printf(n链表所有信息如下:n); printf(addressttNumberttAgen); if (pb = NULL) printf(n); return; while(pb-next != Lnode) printf(%xtt%dtt%dn,pb,pb-num,pb-age); /printf(addr: p = %xtn = %xnn,pb-prior,pb-next); pb=pb-next; pr

14、intf(%xtt%dtt%dn,pb,pb-num,pb-age); /printf(addr: p = %xtn = %xnn,pb-prior,pb-next); printf(n);/*#*/1_线性表/*#*/多维数组-/*MoreArray.c*/#include int main(void) int i,j,k; int str234 = 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16, 17,18,19,20, 21,22,23,24; int (*p1)34 = str; int *p2 = str; int *p3 = str; prin

15、tf(n标准多维指针访问:n); for (i=0;i24;i+) printf(%d ,*(*(*(p1)+i); printf(n一维指针访问:n); for (i=0;i24;i+) printf(%d ,*(p2+i); printf(n多维指针访问:n); for (i=0;i24;i+) printf(%d ,*(p3+i); /printf(%d ,*(*(*(p3)+i); /段错误 /printf(%d ,*(p3+i); /段错误 printf(n指针下标法访问:n); for (i=0;i2;i+) for (j=0;j3;j+) for (k=0;k/*= 工程名称:

16、Link 组成文件: main.c link.c link.h 功能描述: 链表综合练习 程序分析: 完成链表建立,结点删除,结点插入等操作 维护记录: 2010-09-12 v1.1 add by dxh=*/*main.c*/#include #include #include link.hvoid display(void) printf(/*/n); printf(/* 1: 创建链表 */n); printf(/* 2: 插入链表 */n); printf(/* 3: 删除链表 */n);/ printf(/* 4: 搜索链表 */n); printf(/* 5: 输出链表 */n)

17、; printf(/* 0: 退出链表 */n); printf(/*/n);int main(void) NODE *head = NULL; TYPE *ins = NULL; int delnum = 0,searnum = 0; int menu = 0,link_num = 0; while(1) display(); scanf(%d,&menu); switch(menu) case CREATE_CMD : printf(input create link Number:n); scanf(%d,&link_num); head = creat(link_num); print

18、(head); /打印创建的链表 break; case INSERT_CMD : ins = (TYPE *)malloc(sizeof(TYPE); printf(insert Number and Age:n); scanf(%d%d,&ins-num,&ins-age); head = insert(head,&ins-list); print(head); /打印插入节点后的链表 break; case DELETE_CMD : printf(input delete Number:n); scanf(%d,&delnum); head = delnode(head,delnum);

19、 print(head); /打印删除一个节点后的链表 break; case SEARCH_CMD : break; case PRINT_CMD : print(head); /从搜索到的节点开始打印 break; case EXIT_CMD : return 0; break; default: printf(请按提示菜单,输入有效数据进行操作!n); break; /*link.c*/#include #include #include link.h/=/ 语法格式: creat(int n)/ 实现功能: 创建一个具有n个节点的链表,并对其值进行初始化/ 参数: n: 链表的长度,即节点的个数/ 返回值: 所创建链表的首地址/=NODE * creat(int n) NODE *head = NULL; TYPE *ins = NULL; int i; for(i=0;inum,&ins-age); head = insert(head,&ins-list); return(head);/=/ 语法格式: insert(TYPE * head,TYPE * pi)/ 功能: 将新申请的节点加入到指定链表中,并按照num进行从小到大排序/ 参数: *head:待插入链表/ * pi:带插入节点/ 返回值: 插入指定节点后的新链表首址/=

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2