数据结构实验参考程序.docx
- 文档编号:3488274
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:27
- 大小:287.89KB
数据结构实验参考程序.docx
《数据结构实验参考程序.docx》由会员分享,可在线阅读,更多相关《数据结构实验参考程序.docx(27页珍藏版)》请在冰点文库上搜索。
数据结构实验参考程序
数据结构实验参考程序
部门:
xxx
时间:
xxx
整理范文,仅供参考,可下载自行编辑
实验一
#include
#include
#defineMAX_NODE_NUM100
#defineTRUE1U
#defineFALSE0U
typedefstructNodeType
{
intid。
intcipher。
structNodeType*next。
}NodeType。
staticvoidCreaList(NodeType**,constint>。
staticvoidStatGame(NodeType**,int>。
staticvoidPrntList(constNodeType*>。
staticNodeType*GetNode(constint,constint>。
staticunsignedEmptyList(constNodeType*>。
intmain(void>
{
intn,m。
NodeType*pHead=NULL。
while(1>
{
printf("请输入人数n<最多%d个):
",MAX_NODE_NUM>。
scanf("%d",&n>。
printf("和初始密码m:
">。
scanf("%d",&m>。
if(n>MAX_NODE_NUM>
{
printf("人数太多,请重新输入!
\n">。
continue。
}
else
break。
}
CreaList(&pHead,n>。
printf("\n------------循环链表原始打印-------------\n">。
b5E2RGbCAP
PrntList(pHead>。
printf("\n--------------出队情况打印---------------\n">。
p1EanqFDPw
StatGame(&pHead,m>。
printf("\n\"约瑟夫环\"问题完成!
\n">。
return0。
}
staticvoidCreaList(NodeType**ppHead,constintn>DXDiTa9E3d
{
inti,iCipher。
NodeType*pNew,*pCur。
for(i=1。
i<=n。
i++>
{
printf("输入第%d个人的密码:
",i>。
scanf("%d",&iCipher>。
pNew=GetNode(i,iCipher>。
if(*ppHead==NULL>
{
*ppHead=pCur=pNew。
pCur->next=*ppHead。
}
else
{
pNew->next=pCur->next。
pCur->next=pNew。
pCur=pNew。
}
}
printf("完成单向循环链表的创建!
\n">。
}
staticvoidStatGame(NodeType**ppHead,intiCipher>RTCrpUDGiT
{
intiCounter,iFlag=1。
NodeType*pPrv,*pCur,*pDel。
pPrv=pCur=*ppHead。
while(pPrv->next!
=*ppHead>
pPrv=pPrv->next。
while(iFlag>
{for(iCounter=1。
iCounter iCounter++> {pPrv=pCur。 pCur=pCur->next。 } if(pPrv==pCur> iFlag=0。 pDel=pCur。 pPrv->next=pCur->next。 pCur=pCur->next。 iCipher=pDel->cipher。 printf("第%d个人出列,密码: %d\n", pDel->id,pDel->cipher>。 free(pDel>。 } *ppHead=NULL。 } staticvoidPrntList(constNodeType*pHead> { constNodeType*pCur=pHead。 if(EmptyList(pHead>>return。 do {printf("第%d个人,密码: %d\n",pCur->id,pCur=pCur->next。 5PCzVD7HxA } while(pCur! =pHead>。 } staticNodeType*GetNode(constintiId,constintiCipher>jLBHrnAILg {NodeType*pNew。 pNew=(NodeType*>malloc(sizeof(NodeType>>。 if(! pNew> {printf("Error,thememoryisnotenough! \n">。 exit(-1>。 } pNew->id=iId。 pNew->cipher=iCipher。 pNew->next=NULL。 returnpNew。 } staticunsignedEmptyList(constNodeType*pHead> { if(! pHead> {printf("Thelistisempty! \n">。 returnTRUE。 } returnFALSE。 } 实验二 #include #include struct { char status。 int num。 int time。 }a。 typedef struct{ int num。 int time。 }Element。 struct { Element *base。 Element *top。 int stacksize。 }S,VS。 void main(>{ typedef struct{ int num。 struct QNode *next。 }QNode,*QueuePtr。 QueuePtr l。 struct { QueuePtr front。 QueuePtr rear。 }Q。 int n,x,m=0,order,money,b=0。 printf("\nInput the size of the garage and the cost per hour: ">。 scanf("%d%d",&n,&x>。 S.base=(Element*>malloc(n*sizeof(Element>>。 S.top=S.base。 S.stacksize=n。 VS.base=(Element *>malloc((n-1>*sizeof(Element>>。 VS.top=VS.base。 VS.stacksize=n-1。 Q.front=Q.rear=(QueuePtr>malloc(sizeof(QNode>>。 Q.front->next=NULL。 / while (b! =1>{ printf("\nInput the order! : ">。 scanf("%c,%d,%d",&(a.status>,&(a.num>,&(a.time>>。 switch(a.status> { case 'E': b=1。 break。 case 'A': if (S.top-S.base (*(S.top>>.num=a.num。 (*(S.top>>.time=a.time。 S.top++。 order=S.top-S.base。 printf("The %d car is in the %d of garage! \n",a.num,order>。 } else { Q.rear=(QueuePtr>malloc(sizeof(QNode>>。 Q.rear->next=NULL。 Q.front->next=Q.rear。 Q.rear->num=a.num。 m++。 printf("The %d car is in the %d of Queue! \n",a.num,m>。 } break。 case 'D': while ((*(--S.top>>.num! =a.num>{ (*(VS.top>>.num=(*(S.top>>.num。 (*(VS.top>>.time=(*(S.top>>.time。 VS.top++。 } money=(a.time-(*(S.top>>.time>*x。 printf("The %d car is out of %d of garage and the cost is %d! \n",a.num,S.top-S.base+1,money>。 while (VS.top! =VS.base>{ (*(S.top>>.num=(*(--VS.top>>.num。 (*(S.top>>.time=(*(VS.top>>.time。 S.top++。 } if (m! =0>{ l=Q.front->next。 (*(S.top>>.num=l->num。 (*(S.top>>.time=a.time。 S.top++。 printf("The %d car is in the %d of garage! \n",l->num,S.stacksize>。 l=Q.front->next。 Q.front->next=Q.front->next->next。 free(l>。 m--。 } break。 default: printf("The order is wrong! \n">。 break。 } } printf("\nThe program has finished! \n">。 }xHAQX74J0X 实验三 #include #include"windows.h" #defineMAXNODE1024 #defineMAXWEIGHT2147483647 structHuNode { intweight。 intlc,rc,pr。 }。 structHTree { structHuNodeHN[MAXNODE]。 int head。 int count。 }。 typedefstructHTree*PHTree。 PHTreeHuffman(intn,int*pw> { intminw1,minw2,index1,index2,i,k。 PHTreePHT=NULL。 PHT=(PHTree>malloc(sizeof(structHTree>>。 if(PHT==NULL> { printf("mallocmemoryerror! \n">。 returnNULL。 } PHT->count=n。 for(i=0。 i i++> { PHT->HN[i].lc=-1。 PHT->HN[i].rc=-1。 PHT->HN[i].pr=-1。 if(i { PHT->HN[i].weight=pw[i]。 } else { PHT->HN[i].weight=-1。 } } for(i=0。 i i++> { minw1=MAXWEIGHT。 minw2=MAXWEIGHT。 index1=-1。 index2=-1。 for(k=0。 k k++> { if(PHT->HN[k].pr==-1&&PHT->HN[k].weight { minw2=minw1。 index2=index1。 minw1=PHT->HN[k].weight。 index1=k。 } elseif(PHT->HN[k].pr==-1&&PHT->HN[k].weight { minw2=PHT->HN[k].weight。 index2=k。 } } PHT->HN[i+n].lc=index1。 PHT->HN[i+n].rc=index2。 PHT->HN[index1].pr=i+n。 PHT->HN[index2].pr=i+n。 PHT->HN[i+n].weight=minw1+minw2。 PHT->head=i+n。 } returnPHT。 } voidprint(PHTreepht,char*pc> { charcode[1024],index,i,pr,pcv,k。 printf("encodeasfollow: \n">。 for(i=0。 i i++> { index=0。 pr=i。 do { pcv=pr。 pr=pht->HN[pcv].pr。 if(pht->HN[pr].lc==pcv>code[index++]=0。 elseif(pht->HN[pr].rc==pcv>code[index++]=1。 }while(pr! =pht->head>。 printf("%c: ",pc[i]>。 for(k=index-1。 k>=0。 k--> { printf("%d",code[k]>。 } printf("\n">。 } } voidmain(> { int*pw,n,i。 char*pc。 PHTreepht。 printf("inputnodecount: ">。 scanf("%d",&n>。 if(n<1> { printf("inputerror! \n">。 return。 } pw=(int*>malloc(n*sizeof(int>>。 pc=(char*>malloc(n*sizeof(char>>。 if(pw==NULL||pc==NULL> { printf("mallocmemoryerror! \n">。 return。 } for(i=0。 i i++> { fflush(stdin>。 printf("the%dthnodeandvalue(a,1>: ",i+1>。 scanf("%c,%d",&pc[i],&pw[i]>。 } pht=Huffman(n,pw>。 print(pht,pc>。 getchar(>。 } LDAYtRyKfE voidmain(> { int*pw,n,i。 char*pc。 PHTreepht。 printf("inputnodecount: ">。 scanf("%d",&n>。 if(n<1> { printf("inputerror! \n">。 return。 } pw=(int*>malloc(n*sizeof(int>>。 pc=(char*>malloc(n*sizeof(char>>。 if(pw==NULL||pc==NULL> { printf("mallocmemoryerror! \n">。 return。 } for(i=0。 i i++> { fflush(stdin>。 printf("the%dthnodeandvalue(a,1>: ",i+1>。 scanf("%c,%d",&pc[i],&pw[i]>。 } pht=Huffman(n,pw>。 print(pht,pc>。 free(pw>。 free(pc>。 free(pht>。 getchar(>。 } 实验四Zzz6ZB2Ltk 实验五 #include #include #include #definele100 structpoint { charkey[11]。 }。 voidmaopao(pointc[]> { pointa,b[le]。 inti,j,jh=0,bj=0,q。 for(i=0。 i i++>{ b[i]=c[i]。 }。 for(i=0。 i i++>{ for(j=le-1。 j>i。 j-->{ bj=bj+1。 q=strcmp(b[i].key,b[j].key>。 if(q==1>{ a=b[i]。 b[i]=b[j]。 b[j]=a。 jh=jh+3。 }。 }。 }。 cout<<"冒泡法: "< "< for(i=0。 i i++>{ cout< }。 cout< dvzfvkwMI1 }。 voidzhijiecharu(pointc[]> { pointb[le+1]。 inti,j,jh=0,bj=0,q。 for(i=0。 i i++>{ b[i+1]=c[i]。 }。 for(i=2。 i<=le+1。 i++>{ q=strcmp(b[i].key,b[i-1].key>。 bj=bj+1。 if(q==-1>{ b[0]=b[i]。 b[i]=b[i-1]。 jh=jh+2。 q=strcmp(b[0].key,b[i-2].key>。 bj=bj+1。 for(j=i-2。 q==-1。 j-->{ b[j+1]=b[j]。 jh=jh+1。 q=strcmp(b[0].key,b[j-1].key>。 bj=bj+1。 }。 b[j+1]=b[0]。 jh=jh+1。 }。 }。 cout<<"直接插入排序: "< "< for(i=1。 i i++>{ cout< }。 cout< rqyn14ZNXI }。 // voidshellinsert(pointc[],intdk,intd[]> { intj,i,q。 pointa。 for(i=dk+1。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 参考 程序