编程2.docx
- 文档编号:30226237
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:14
- 大小:17.16KB
编程2.docx
《编程2.docx》由会员分享,可在线阅读,更多相关《编程2.docx(14页珍藏版)》请在冰豆网上搜索。
编程2
#include"stdio.h"
typedefstructBnode
{intdata;
structBnode*Lchild,*Rchild;
}Btnode,*Bitree;
BitreeCreatBitree()
{intnum;
Bitreet;
scanf("%d",&num);
if(num==-1)t=NULL;
else
{t=(Bitree)malloc(sizeof(Btnode));
t->data=num;
t->Lchild=CreatBitree();
t->Rchild=CreatBitree();
}
return(t);
}
voidPreorder(BitreeBT)
{if(BT!
=NULL)
{printf("%d",BT->data);
Preorder(BT->Lchild);
Preorder(BT->Rchild);
}
}
voidInorder(BitreeBT)
{if(BT!
=NULL)
{Inorder(BT->Lchild);
printf("%d",BT->data);
Inorder(BT->Rchild);
}
}
voidPostorder(BitreeBT)
{if(BT!
=NULL)
{Postorder(BT->Lchild);
Postorder(BT->Rchild);
printf("%d",BT->data);
}
}
intBitreeCount(BitreeBT)
{if(BT==NULL)return(0);
elsereturn(BitreeCount(BT->Lchild)+BitreeCount(BT->Rchild)+1);
}
intBitreeHeight(BitreeBT)
{inth1,h2;
if(BT==NULL)return(0);
else
{h1=BitreeHeight(BT->Lchild);
h2=BitreeHeight(BT->Rchild);
if(h1>h2)return(h1+1);
elsereturn(h2+1);
}
}
/*此处添加代码,定义函数对叶子节点个数进行统计*/
voidmain()
{intnum,height,leaf_num;
intchoice=7;
BitreeTree;
printf("PLEASEINPUTTHEBITREENODESANDRETURNBY-1...\n");
Tree=CreatBitree();
num=BitreeCount(Tree);
height=BitreeHeight(Tree);
/*此处添加代码,调用函数统计叶子节点个数*/
while(choice!
=0)
{printf("\nCHOOSETHEFUNCTIONAND0TOSTOP\n");
printf("1.USEVISITINGMETHODDLR\n");
printf("2.USEVISITINGMETHODLDR\n");
printf("3.USEVISITINGMETHODLRD\n");
printf("4.COUNTTHENODES\n");
printf("5.COUNTTHEHEIGHT\n");
printf("6.COUNTTHELEAF_NODES\n");
printf("0.EXIT\n");
printf("THENUMBERYOUCHOOSEIS:
");
scanf("%d",&choice);
printf("\nTHEANSWERIS:
");
switch(choice)
{case1:
Preorder(Tree);printf("\n");break;
case2:
Inorder(Tree);printf("\n");break;
case3:
Postorder(Tree);printf("\n");break;
case4:
printf("\nTHENUMBEROFTHENODESIS:
%d\n",num);break;
case5:
printf("\nTHEHEIGHTOFTHETREEIS:
%d\n",height);break;
/*叶子节点个数输出*/
case6:
printf("\nTHENUMBEROFTHELEAF_NODESIS:
%d\n",leaf_num);break;
case0:
break;
default:
printf("ERROR!
\n");choice=0;break;
}
}
}
#defineNULL0
#include"stdio.h"
structLink
{
intdata;
structLink*next;
}*head;
/*建立链表*/
structLink*creat()
{intx;
structLink*head=NULL,*p,*q;
printf("\nINPUTTHELINK_DATAAND-1TOSTOP\n");
scanf("%d",&x);
while(x!
=-1)
{
p=(structLink*)malloc(sizeof(structLink*));
p->data=x;
if(head==NULL)head=p;
elseq->next=p;
q=p;
scanf("%d",&x);
}
if(q!
=NULL)q->next=NULL;
return(head);
}
/*删除单链表中的第K个结点*/
intDelete(structLink*head,intk)
{
inti;
structLink*p,*q;
p=head;
i=1;
while((p!
=NULL)&&(i {q=p; p=p->next; i++; } if((p! =NULL)&&(i==k)) { q->next=p->next; free(p);return (1); } else { printf("ThisLinkistooshort");return(0); } } /*在结点A之后插入新结点B;若表空,则B为第一个结点;若表中无A,则B为最后*/ intInsert(structLink*head,inta,intb) { structLink*p,*q,*s; p=head; q=(structLink*)malloc(sizeof(structLink*)); q->data=b; if(p==NULL) { p=q; return (1); } while((p! =NULL)&&(p->data! =a)) { s=p; p=p->next; } if(p==NULL) {s->next=q; q->next=NULL; } else { q->next=p->next; p->next=q; } return (1); } main() { inti,a,b,choice=6,n,result; structLink*head=NULL,*p; while(choice! =0) { printf("\nCHOOSETHEFUNCTIONAND0TOSTOP\n"); printf("1.creat\n"); printf("2.length\n"); printf("3.delete\n"); printf("4.insert\n"); printf("5.division\n"); printf("0.exit\n"); printf("THENUMBERYOUCHOOSEIS: "); scanf("%d",&choice); switch(choice) {case1: head=creat();printf("\n");break; case2: n=LLink(head);printf("thelengthis: %d",n);printf("\n");break; case3: printf("thedeletelocationis: "); scanf("%d",&i); result=Delete(head,i);printf("\n");break; case4: printf("theinsertedlocationnodeis: "); scanf("%d",&a); printf("theinsertnumberis: "); scanf("%d",&b); result=Insert(head,a,b);printf("\n");break; case5: head=Division(head);printf("\n");break; case0: break; default: printf("ERROR! \n");break; } if(result! =0) { printf("success! thelinklistis: \n"); p=head; while(p! =NULL) { printf("%d",p->data); printf("\n"); p=p->next; } } elseprintf("failure! "); } } voidmain() { intM=10,n=4;/*M是数组大小,n是元素个数,即表长*/ intresult,k,choice; inti,x; intV[10];/*数组赋初值*/ puts("pleaseenterthenumber: \n"); for(k=0;k puts("theinputnumberis: \n"); for(k=0;k puts("\npleaseenteryourchoice: 1--insert,2--delete,0--exit\n"); scanf("%d",&choice); while(choice! =0) {if(choice==1){puts("theinsertlocationis: "); scanf("%d",&i); puts("theinsertnumberis: "); scanf("%d",&x); result=insq(i,x,V,M,&n);/*在第i个元素后插入x*/ } if(choice==2){puts("thedeletelocationis: "); scanf("%d",&i); result=delsq(i,V,&n);/*删除第i个元素*/ } if(result==1) {printf("success! \n"); for(k=0;k } elseprintf("failure! "); puts("\npleaseenteryourchoice: 1--inset,2--delete,0--exit\n"); scanf("%d",&choice); } } intdelsq(inti,intV[],int*p)/*在线性表V中删除第i个元素*/ { intn,j; n=*p; if(n==0) { printf("Thelistisempty\n");return(0); } if(i<0||i>n-1) { printf("Thiselementisnotinthelist\n");return(0); } else { for(j=i;j *p=--n;/*表长减1*/ return (1); } } intinsq(inti,intx,intV[],intM,int*p)/*在线性表V中第i个元素之后插入x,i的合法值为1 { intn,j; n=*p;/*获取表长*/ if(n==M) { printf("overflow\n");return(0); } if((i<0)||(i>n)) { printf("iiserror\n");return(0); } else { for(j=n;j>i;j--)V[j]=V[j-1];/*插入位置后元素依次右移*/ V[j]=x;/*插入x*/ *p=++n;/*表长加1,由p返回到函数调用处*/ return (1); } }_ #include"stdio.h" main() {inta[9];inti;intchoice=1,result;intskey; printf("\ninputthenumber: \n"); for(i=1;i<=8;i++) scanf("%d",&a[i]); printf("\n"); printf("theinputnumberis: "); for(i=1;i<=8;i++) printf("%d",a[i]); printf("\n"); while(choice! =0) { printf("\nCHOOSETHEFUNCTIONAND0TOSTOP\n"); printf("1.s_search\n");/*顺序查找*/ printf("2.bubblesort\n"); printf("3.b_search\n"); printf("0.exit\n"); printf("THENUMBERYOUCHOOSEIS: "); scanf("%d",&choice); switch(choice) {case1: printf("pleaseinputthesearchkey: \n"); /*此处添加代码,实现调用顺序查找函数,并输出查找结果*/ break; case2: result=bubsort(a,8); if(result==1) {printf("success! \n"); printf("thesortednumbers: \n"); for(i=1;i<=8;i++) printf("%d",a[i]); } elseprintf("failure! "); break; case3: printf("pleaseinputthesearchkey: \n"); scanf("%d",&skey); result=b_search(a,8,skey); if(result! =0) {printf("success! \n"); printf("\nthelocationofthekeyis: %d\n",result); } elseprintf("failure! "); break; case0: break; default: printf("ERROR! \n");break; } } } ints_search(intL[],intn,intkey)/*此处添加代码,定义顺序查找函数*/ { } intbubsort(intL[],intn)/**冒泡排序**/ { inti=1,j=1,t,flag=1; while((j { flag=0; for(i=1;i<=n-j;i++) { if(L[i]>L[i+1]) { t=L[i];L[i]=L[i+1];L[i+1]=t; flag++; } } j++; } return (1); } intb_search(intL[],intn,intkey)/**二分法查找**/ {intlow,high,mid; low=1;high=n; while(low<=high) {mid=(low+high)/2; if(L[mid]==key)return(mid); elseif(key elselow=mid+1; } return(0); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程