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。
ii++>
{
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。
ii++>
{
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。
icount。
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。
ii++>
{
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。
ii++>
{
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。
ii++>{
b[i]=c[i]。
}。
for(i=0。
ii++>{
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。
ii++>{
cout<
}。
cout<dvzfvkwMI1
}。
voidzhijiecharu(pointc[]>
{
pointb[le+1]。
inti,j,jh=0,bj=0,q。
for(i=0。
ii++>{
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。
ii++>{
cout<
}。
cout<rqyn14ZNXI
}。
//
voidshellinsert(pointc[],intdk,intd[]>
{
intj,i,q。
pointa。
for(i=dk+1。