1、数据结构代码/ all1.cpp : Defines the entry point for the console application./带有头结点的链表综合#include stdafx.h#include stdio.h#include stdlib.h#include typedef struct Lnode char data10; struct Lnode *next;listline;/*定义头接点(head),前驱接点(r),当前接点(p),零时接点(temp)*/listline *head,*r,*p,*temp;void menu() puts(); puts(=);
2、 printf(1.创建新链表-1n); printf(2.插入新元素-2n); printf(3.删除旧元素-3n); printf(4.查找旧元素-4n); printf(5.倒置原链表-5n); printf(6.显示所有-6n); printf(7.退出-7n); puts(=); puts();void creater(int h) int i; if(head=(listline *)malloc(sizeof(listline)=NULL) printf(n不能创建链表); exit(1); r=head; for(i=1;inext=NULL; r-next=p; printf
3、(输入第%d个元素: ,i); scanf(%s,&p-data); r=p; void print(void) temp=head-next; printf(n); while(temp!=NULL) printf(%s ,temp-data); temp=temp-next; void turnlist()/*倒置链表函数*/ r=head-next; p=r-next; r-next=NULL; while(p!=NULL) temp=p-next; p-next=r; r=p; p=temp; head-next=r;void insert(int n,char newdata10)
4、int j; p=head-next; j=0; while(p & jnext; j+; r=(listline *)malloc(sizeof(listline); strcpy(r-data,newdata); r-next=p-next; p-next=r;void del_list(int n) int j; char e10; p=head-next; j=0; while(p & jnext; j+; r=p-next; p-next=r-next; strcpy(e,r-data); free(r);void main(void) int select,length,n; ch
5、ar name110; head=NULL; while(1) menu(); scanf(%d,&select); switch(select) case 1: printf(n请输入你要建立的链表的长度: ); scanf(%d,&length); creater(length); printf(n以下为你链表中的所有元素: ); puts( ); print(); puts( ); printf(n链表已创建,返回n); getchar(); puts( ); break; case 2: if(head=NULL) printf(n请先建立链表,按任意键返回 n); getchar()
6、; break; printf(请输入你要在第几个元素后面插入新元素:n); scanf(%s,&n); printf(请输入你要插入的新元素:n); scanf(%s,&name1); insert(n,name1); printf(n插入成功,以下为插入后的链表: ); print(); puts(); break; case 3: if(head=NULL) printf(n请先建立链表,按任意键返回 n); getchar(); break; printf(请输入你要删除第几个元素:n); scanf(%s,&n); del_list(n); printf(n删除成功,以下为插入后的链
7、表: ); print(); puts(); break; case 5: if(head=NULL) printf(nn出错,返回n); break; else printf(n以下为原链表:); print(); printf(nn以下为倒置后的链表:); turnlist(); print(); printf(nn倒置成功,按任意键返回n); getchar(); break; case 6: printf(n以下为你链表中的所有元素: ); puts( ); print(); puts( ); break; case 7: exit(0); puts(); default: print
8、f(n输入错误,请重新选择,返回n); getchar(); / text1.cpp : Defines the entry point for the console application./#include stdafx.h#include stdio.h#include stdlib.h#include iostreamusing namespace std;#define stack_init_size 100#define stackincreament 10struct Sqstack char *top; char *base; int stacksize;void inits
9、tack(Sqstack &S) S.base=(char *)malloc(stack_init_size * sizeof(char); if(!S.base) puts(error); S.top=S.base; S.stacksize=stack_init_size;void push(Sqstack &S,char e) if(S.top-S.base=S.stacksize) S.base=(char *)realloc(S.base,(S.stacksize+stackincreament)*sizeof(char); if(!S.base) puts(error); S.top
10、=S.base+S.stacksize; S.stacksize+=stackincreament; *S.top+=e;void pop(Sqstack &S,char &e) if(S.top=S.base) puts(error); e=*-S.top;int gettop(Sqstack S,char &e) if(S.top=S.base) puts(error); e=*(S.top-1); return(e);int empty(Sqstack &S) if(S.top=S.base) return 1; else return 0;int main() struct Sqsta
11、ck S; char str20=0; initstack(S); puts(输入一串表达式:); gets(str); int i=0,flag1=0,flag2=0; char e1,e2; int a=-1; while(a!=1) switch(stri) case #: a+;break; case (: push(S,();break; case : push(S,);break; case : push(S,);break; case ): if(gettop(S,e1)=() pop(S,e2); else push(S,); flag1=1; break; case : if
12、(gettop(S,e1)=) pop(S,e2); else push(S,); flag1=1; break; case : if(gettop(S,e1)=) pop(S,e2); else push(S,); flag1=1; break; default: break; i+; if(empty(S) puts(表达式合法); else puts(表达式不合法); / text1.cpp : Defines the entry point for the console application./#include stdafx.h#include stdio.h#include st
13、dlib.h#include iostreamusing namespace std;#define stack_init_size 100#define stackincreament 10struct Sqstack int *top; int *base; int stacksize;void initstack(Sqstack &S) S.base=(int *)malloc(stack_init_size * sizeof(int); if(!S.base) puts(error); S.top=S.base; S.stacksize=stack_init_size;void pus
14、h(Sqstack &S,int e) if(S.top-S.base=S.stacksize) S.base=(int *)realloc(S.base,(S.stacksize+stackincreament)*sizeof(int); if(!S.base) puts(error); S.top=S.base+S.stacksize; S.stacksize+=stackincreament; *S.top+=e;void pop(Sqstack &S,int &e) if(S.top=S.base) puts(error); e=*-S.top;void gettop(Sqstack
15、S,int &e) if(S.top=S.base) puts(error); e=*(S.top-1);int empty(Sqstack &S) if(S.top=S.base) return 1; else return 0;int main() struct Sqstack S; initstack(S); int a,b=0; puts(please enter a number you want to change); scanf(%d,&a); puts(enter a Hexadecimal numbers you want); scanf(%d,&n) while(a) pu
16、sh(S,a%n); a=a/n; while (!empty(S)/用while输入所有的数据 pop(S,b); coutb next=NULL; return 1;char DestoryQueue(LinkQueue &Q) while(Q.front) Q.rear=Q.front-next; free(Q.front); Q.front=Q.rear; return 1;char EnQueue(LinkQueue &Q,char e) p=(QueuePtr)malloc(sizeof(Qnode); if(!p) puts(error); p-data=e; p-next=NU
17、LL; Q.rear-next=p; Q.rear=p return 1;char DeQueue(LinkQueue &Q,char &e) if(Q.front=Q.rear) puts(error); p=Q.front-next; e=p-data; Q.front-next=p-next; if(Q.rear=p) Q.rear=Q.front; free(p); return 1;void mian(void) 二叉树1对题目要有需求分析 在需求分析中,将题目中要求的功能进行叙述分析,并且设计解决此问题的数据存储结构,设计或叙述解决此问题的算法。 给出实现功能的一组或多组测试数据,
18、程序调试后,将按照此测试数据进行测试的结果列出来。 如果程序不能正常运行,写出实现此算法中遇到的问题和改进方法; 2对题目要有相应的源程序 源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。(注释量占总代码的四分之一) 程序能够运行,要有基本的容错功能。尽量避免出现操作错误时出现死循环; 3最后提供的主程序可以象一个应用系统一样有主窗口,通过主菜单和分级菜单调用课程设计中要求完成的各个功能模块,调用后可以返回到主菜单,继续选择其他功能进行其他功能的选择。 二叉树的建立与遍历 问题描述 建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍
19、历结果。 基本要求 从键盘接受输入,以二叉链表作为存储结构,建立二叉树,并对其进行遍历(先序、中序、后序),将遍历结果打印输出。 以下是我的数据结构实验的作业:肯定好用,里面还包括了统计树的深度和叶子数!记住每次做完一个遍历还要重新输入你的树哦! #include stdio.h #include string.h #define NULL 0 typedef struct BiTNode char data; struct BiTNode *lchild,*rchild; BiTNode,*BiTree; BiTree Create(BiTree T) char ch; ch=getchar
20、(); if(ch=#) T=NULL; else if(!(T=(BiTNode *)malloc(sizeof(BiTNode) printf(Error!); T-data=ch; T-lchild=Create(T-lchild); T-rchild=Create(T-rchild); return T; void Preorder(BiTree T) if(T) printf(%c,T-data); Preorder(T-lchild); Preorder(T-rchild); int Sumleaf(BiTree T) int sum=0,m,n; if(T) if(!T-lchi
21、ld)&(!T-rchild) sum+; m=Sumleaf(T-lchild); sum+=m; n=Sumleaf(T-rchild); sum+=n; return sum; void zhongxu(BiTree T) if(T) zhongxu(T-lchild); printf(%c,T-data); zhongxu(T-rchild); void houxu(BiTree T) if(T) houxu(T-lchild); houxu(T-rchild); printf(%c,T-data); int Depth(BiTree T) int dep=0,depl,depr; i
22、f(!T) dep=0; else depl=Depth(T-lchild); depr=Depth(T-rchild); dep=1+(depldepr?depl:depr); return dep; main() BiTree T; int sum,dep; T=Create(T); Preorder(T); printf(n); zhongxu(T); printf(n); houxu(T); printf(n); sum=Sumleaf(T); printf(%d,sum); dep=Depth(T); printf(n%d,dep); 二叉树2/* 二叉树的建立与遍历 */ # in
23、clude # include typedef int Etype; typedef struct BiTNode /* 树结点结构 */ Etype data; struct BiTNode *lch,*rch; BiTNode; /* 函数原形声明 */ BiTNode *creat_bt1(); BiTNode *creat_bt2() void inorder(BiTNode *p); void numb(BiTNode *p); BiTNode *t; int n,n0,n1,n2,; /* 主函数 */ main() char ch; int k; do printf(nnn);
24、printf(nn 1. 建立二叉树方法1 ); printf(nn 2. 建立二叉树方法2); printf(nn 3. 中序递归遍历二叉树); printf(nn 4. 计算树中结点个数); printf(nn 5. 结束程序运行); printf(n=); printf(n 请输入您的选择 (1,2,3,4,5,6); scanf(%d,&k); switch(k) case 1:t=creat_bt1( );break; /* 调用性质5建立二叉树算法 */ case 2:t=creat_bt2( );break; /* 调用递归建立二叉树算法 */ case 3: inorder(t); /* 调用中序遍历 */ printf(nn 打回车键,继续。“); ch=getch(); break; case 4: n=0;n0=0 ; n1=0; n2
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1