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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构程序.docx

1、数据结构程序十进制转化为二进制#includemain() int n,i,a80,t; i=0; printf(输入一个十进制数n); scanf(%d,&n); do ai=n%2; n=n/2; i+; while(n!=0); t=i; for(i=t-1;i=0;i-) printf(%d,ai); return 0;二叉树#include#include#define MAX 20typedef struct BTNode /*节点结构声明*/ char data ; /*节点数据*/ struct BTNode *lchild; struct BTNode *rchild ; /

2、*指针*/*BiTree;void createBiTree(BiTree *t) /* 先序遍历创建二叉树*/ char s; BiTree q; printf(nplease input data:(exit for #); s=getche(); if(s=#)*t=NULL; return; q=(BiTree)malloc(sizeof(struct BTNode); if(q=NULL)printf(Memory alloc failure!); exit(0); q-data=s; *t=q; createBiTree(&q-lchild); /*递归建立左子树*/ create

3、BiTree(&q-rchild); /*递归建立右子树*/void PreOrder(BiTree p) /* 先序遍历二叉树*/ if ( p!= NULL ) printf(%c, p-data); PreOrder( p-lchild ) ; PreOrder( p-rchild) ; void InOrder(BiTree p) /* 中序遍历二叉树*/ if( p!= NULL ) InOrder( p-lchild ) ; printf(%c, p-data); InOrder( p-rchild) ; void PostOrder(BiTree p) /* 后序遍历二叉树*/

4、if ( p!= NULL ) PostOrder( p-lchild ) ; PostOrder( p-rchild) ; printf(%c, p-data); void Preorder_n(BiTree p) /*先序遍历的非递归算法*/ BiTree stackMAX,q; int top=0,i; for(i=0;idata); if(q-rchild!=NULL) stacktop+=q-rchild; if(q-lchild!=NULL) q=q-lchild; else if(top0) q=stack-top; else q=NULL; void release(BiTre

5、e t) /*释放二叉树空间*/ if(t!=NULL) release(t-lchild); release(t-rchild); free(t); int main() BiTree t=NULL; createBiTree(&t); printf(nnPreOrder the tree is:); PreOrder(t); printf(nnInOrder the tree is:); InOrder(t); printf(nnPostOrder the tree is:); PostOrder(t); printf(nn先序遍历序列(非递归):); Preorder_n(t); rel

6、ease(t); return 0; 运行程序输入:ABC#DE#G#F#运行结果:ABCDEGF蛇形填数#include/因为最先竖着赋值,而核心代码里面最初的i在变,所以i代表行。 int main() int a2020; int i,j,n,tot=0; printf(输入一个10进制数(20以内)n); scanf(%d,&n); for(i=0;i20;i+)/使每个数组元素都写上0以便赋值用作判断该元素是否已经赋过值了 for(j=0;j20;j+) aij=0; j=n-1; i=-1;/使要赋的值时a+ij的位置指向右上角。 while(totn*n) while(i+10;

7、 a+ij=+tot; /或者出界时停止竖着赋值。即跳出这个循环。 while(j-1=0&!aij-1)/开始倒退着赋值。/不过感觉这里应该是j-1=0才对 ai-j=+tot; while(i-1=0&!ai-1j) a-ij=+tot; while(j+1n&!aij+1) ai+j=+tot; for(i=0;in;i+) for(j=0;jn;j+) printf(%d ,aij); printf(n); return 0;单链表的插入删除/*修改于2012.4.1218:42目的:实现对单链表的基本操作如查找,删除,添加 */ #include #include /* 给 char

8、 类型定义别名 datatype */typedef char datatype; /* 定义链表节点类型 */typedef struct node datatype data; struct node *next;linklist; /* 函数声明部分 */linklist* CreatList();linklist* Get(linklist*, int);linklist* Locate(linklist*, datatype);void PrintList(linklist*);void InsertAfter(linklist*, datatype);void InsertBefo

9、re(linklist*, int, datatype);void DeleteAfter(linklist*);void Deleter(linklist*, int);void FreeList(linklist*); int main() int pos; datatype value; printf(*进入输入演示*n); /* 测试创建链表函数 */ printf(请输入一串字符,以 0 结束n); linklist *head, *p; head = CreatList(); /* 测试打印链表函数 */ printf(n你所输入的链表为:n); PrintList(head);

10、/* 测试按序号查找函数 */ printf(*进入查找演示*n); printf(n请输入要查找的节点序号:n); scanf(%d, &pos); getchar(); p = Get(head, pos); if(p != NULL) printf(%cn, p - data); else printf(Cant Get This Key!n); /* 测试按值查找函数 */ / printf(n请输入要查找的值:n); /scanf(%c, &value); / p = Locate(head, value); / if(p != NULL) / / printf(%cn, p - d

11、ata); / / else / / printf(Cant Get This Key!n); / /* 测试插入节点函数 */ printf(*进入插入演示*n); printf(n你想在第几个节点前插入?n); scanf(%d, &pos); getchar(); printf(请输入要插入的值n); scanf(%c, &value); InsertBefore(head, pos, value); PrintList(head); /* 测试删除节点函数 */ printf(*进入删除演示*n); printf(n你想删除第几个节点?n); scanf(%d, &pos); Dele

12、ter(head, pos); PrintList(head); /* 销毁链表 */ FreeList(head); system(pause); return 0; /* 带头结点后插法创建链表函数 */linklist* CreatList() datatype key; /* head 为头指针, s 为新节点, r 为尾指针 */ linklist *head, *s, *r; head = (linklist*) malloc(sizeof(linklist); r = head; key = getchar(); /* 遇到 $ 就停止创建 */ while(key != 0)

13、s = (linklist*) malloc(sizeof(linklist); s - data = key; /* 新节点插入表尾 */ r - next = s; /* 尾指针指向新的表尾 */ r = s; key = getchar(); r - next = NULL; /* 返回头指针 */ return head; /* 打印链表函数 */void PrintList(linklist* head) linklist *p; p = head - next; while(p != NULL) printf(%c, p - data); p = p - next; printf(

14、n); /* 查找链表中第 i 个节点 */linklist* Get(linklist* head, int i) /* j 为扫描计数器 */ int j = 0; linklist *p; /* p 指向头节点 */ p = head; /* 到达表尾或序号不合法就退出循环 */ while(p - next != NULL) & (j next; j+; if (i = j) return p; else return NULL; /* 在链表中查找值 key 并返回所在节点 */linklist* Locate(linklist* head, datatype key) linkli

15、st *p; /* p 指向开始结点 */ p = head - next; while(p != NULL) if(p - data != key) p = p - next; else break; return p; /* 在节点 p 后插入 key */void InsertAfter(linklist* p, datatype key) linklist *s; s = (linklist*) malloc(sizeof(linklist); s - data = key; /* 先将 s 指向后一个节点,再将前一个节点指向 s */ s - next = p - next; p -

16、 next = s; /* 将 key 插入链表第 i 个节点之前 */void InsertBefore(linklist* head, int i, datatype key) linklist *p; int j = i - 1; /* 找到第 i-1 个节点 p */ p = Get(head, j); if (p = NULL) printf(Insert Error!n); else /* 将 key 插入节点 p 之后 */ InsertAfter(p, key); /* 删除 p 节点的后继节点 */void DeleteAfter(linklist* p) linklist

17、*r; /* r 指向要删除的节点 */ r = p - next; /* 将 p 直接与 r 下一个节点链接 */ p - next = r - next; /* 释放节点 r */ free(r); /* 删除链表的第 i 个节点 */void Deleter(linklist* head, int i) linklist *p; int j = i - 1; /* 找到第 i-1 个节点 p */ p = Get(head, j); if (p != NULL) & (p - next != NULL) /* 删除 p 的后继节点 */ DeleteAfter(p); else prin

18、tf(Delete Error!n); /* 递归释放单链表 */void FreeList(linklist* p) if (p - next != NULL) FreeList(p - next); free(p);链表的插入/ListInsert_L.cpp/This program is to insert a element into the LNode# include # include # include # include # define INIT_LENGTH 10# define OK 1# define ERROR 0typedef struct LNode /def

19、ine LNode structure int data; struct LNode *next;LNode,*Linklist;int ListInsert_L(Linklist &L,int i,int e) /ListInsert_L() sub-function LNode *p=L; int j=0; while(p&jnext; +j; if(!p|ji-1) /out of location coutErrer! The location is illegal!data=e; s-next=p-next; p-next=s; return (OK); /ListInsert_L(

20、) endint main() /main() function int i,j,e; LNode node10; LNode *L,*p; int arrayINIT_LENGTH+1=5,8,12,18,25,30,37,46,51,89; L=node; L=(Linklist)malloc(sizeof(LNode); L-next=NULL; for (i=10;i0;i-) p=(Linklist)malloc(sizeof(LNode); p-data=arrayi-1; p-next=L-next; L-next=p; p=L; coutendlendlListInsert_L.cpp; coutendl=; cout endlendlThe old LNode is : ; for(i=0;inext; coutdata ; coutendlendlj; coute; if(ListInsert_L(L,j,e) cout endlThe new LNode is : ; p=L; for(i=0;inext; coutdata ; coutendlendl.OK!.; getch();

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

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