回文、二叉树、图多版本

  • 格式:docx
  • 大小:30.70 KB
  • 文档页数:25

二叉树的遍历 #include"stdio.h" #include"stdlib.h" #include"malloc.h"

#define NULL 0 #define MAXQSIZE 100

typedefstructBiTNode{ char data; structBiTNode *lchild,*rchild; }BiTNode,*BiTree;

typedefstructQNode{ BiTree data; structQNode *next; }QNode,*QueuePtr;

typedefstruct { QueuePtr front; QueuePtr rear; }LinkQueue;

voidInitQueue(LinkQueue&Q){ Q.front=Q.rear=(QueuePtr)malloc(MAXQSIZE*sizeof(QNode)); if(!Q.front) exit(0); Q.front->next=NULL;

} voidEnQueue(LinkQueue&Q,BiTree e){ QueuePtr p; p=(QueuePtr)malloc(sizeof(QNode)); if(!p) exit(0); p->data=e; p->next=NULL; Q.rear->next=p; Q.rear=p; } voidDeQueue(LinkQueue&Q,BiTree&e){ QueuePtr p; if(Q.front==Q.rear) exit(0); p=Q.front->next; e=p->data; Q.front->next=p->next; if(Q.rear==p) Q.rear=Q.front; free(p);

} voidCreateBiTree(BiTree&T){ charch; scanf("%c",&ch); if(ch=='0') T=NULL; else{ if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) exit(0); T->data=ch; CreateBiTree(T->lchild); CreateBiTree(T->rchild); }

} void Visit(BiTree e){ printf("%c\n",*e);

}

voidCCTraverse(BiTree T) { BiTree p;

LinkQueue Q; InitQueue(Q); EnQueue(Q,T); while(Q.rear!=Q.front){ DeQueue(Q,p); Visit(p); if(p->lchild) EnQueue(Q,p->lchild); if(p->rchild) EnQueue(Q,p->rchild); } }

void main(){ BiTree T; CreateBiTree(T); CCTraverse(T); }

//(1)CreateBiTree()输入 //(2)if(ch=='0') '0'和0

回文 1 #include"stdio.h" #include"malloc.h" #include"stdlib.h" #include"string.h" #define STACKINITESIZE 100 #define STACKINCREMENT 10

typedefstruct { char *top; char *base; intstacksize; }sqstack;

voidinitstack(sqstack&s) { s.base=(char *)malloc(STACKINITESIZE * sizeof(char)); if(!s.base) exit(0); s.top=s.base; s.stacksize=STACKINITESIZE; }

void push(sqstack&s,char e) { if(s.top-s.base>=s.stacksize) { s.base=(char *)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(char)); if(!s.base) exit(0); s.top=s.base+s.stacksize; s.stacksize+=STACKINCREMENT; } *s.top++=e; }

void pop(sqstack&s,char&e) { if(s.base==s.top) exit(0); e=*--s.top; }

void check() {char a[1000],b[1000],e; inti,m,j,t=0; sqstack s; printf("\n <<<<<<<<<<<<<<<>>>>>>>>>>>>>> \n\n\n"); printf("请输入字符:\n"); scanf("%s",a);

initstack(s); for(i=0;a[i]!='\0';i++); for(j=0;jpush(s,a[j]);

for(m=0;m{pop(s,e);b[m]=e;}

if(i%2==0) t=0; else t=1; for(m=0;m{if(b[m]==a[i/2+t]) continue; else break; } if(m==i/2) printf("该数组是回文序列!\n"); else printf("该数组不是回文序列!\n"); }

void main() { check(); }

回文2 #include #include #include #include #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef char ST; typedefstruct { ST *base; ST *top; intstacksize; }sqstack; voidinitstack(sqstack&S) { S.base=(ST*)malloc(STACK_INIT_SIZE*sizeof(ST)); if(!S.base) exit(-2); S.top=S.base; S.stacksize=STACK_INIT_SIZE; }

void push(sqstack&S,ST e) { if(S.top-S.base>=S.stacksize) { S.base=(ST*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ST)); if(!S.base) exit(-2); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; }

void main() {

charc,a[100]; sqstack stack; inti,n; initstack(stack); printf("请输入要判断的字符:\n"); gets(a); n=strlen(a); for(i=0;i{ c=a[i]; push(stack,c); } if(n%2==0) { for(;i{ stack.top--; if(*stack.top!=a[i]) break; //出栈比较 } if(i==n) printf("\n该字符串是回文!\n\n"); else printf("\n该字符串不是回文!\n\n"); } else { for(;i{ stack.top--; if(*stack.top!=a[i+1]) break; //出栈比较 } if(i+1==n) printf("\n该字符串是回文!\n\n"); else printf("\n该字符串不是回文!\n\n"); } }

回文 3

#include"stdio.h" #include"stdlib.h" #include"malloc.h" #include"string.h" #include"math.h" # define STACK_INIT_SIZE 100 //栈存储空间初始分配量 # define STACKINCREMENT 10 //栈存储空间分配增量

typedefstruct{ char *base; //构造之前和销毁之后 char *top; //栈顶指针 intstacksize; //当前已分配的存储空间,以元素为单位。 }SqStack;

void InitStack(SqStack&S){ //构造一个空栈S S.base=(char *)malloc(STACK_INIT_SIZE*sizeof(char));//初始分量 if(!S.base) printf("ERROR");

S.top=S.base; S.stacksize=STACK_INIT_SIZE; //当前分配存储空间

}//InitStack;

void Push(SqStack&S,char e)//压入元素e {

if(S.top-S.base>=S.stacksize) {S.base=(char *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char)); if(!S.base) printf("ERROR"); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT;