内容发布更新时间 : 2025/7/29 5:57:15星期一 下面是文章的全部内容请认真阅读。
} Lnode,*LinkList;
LinkList Creat_LinkList1(int n ) { LinkList L=NULL;/*空表*/ Lnode *s,*r;
int x,y,i; /*设数据元素的类型为int*/ y=n%4+1;
s=malloc(sizeof(Lnode)); /*建立头结点*/ s->next=L; L=s;r=s;
for(i=1;i<=n;i++) {x=y*i-1;
s=malloc(sizeof(Lnode)); /*在尾部插入结点*/ s->data=x; s->next=NULL; r->next=s; s->prior=r; s->freq=0; r=s; }
return L; }
void printf_LinkList( LinkList L) /*输出链表L中各结点及频度*/ { Lnode * p=L->next; printf(\ while ( p!=NULL)
{ printf(\ p=p->next; }
return ; }
LinkList *Locata(LinkList A,int x) { LinkList p,q; int f,y;
p=A->next; /*指向链表头结点后的数据结点*/ while (p!=NULL && p->data!=x)
p=p->next; /*查找X结点*/
21
if(p->data==x)
{p->freq++; /*找到修改频度*/ f=p->freq; q=p->prior;
while(q!=A&&q->freq
return p; }
void main() { int n,m,i,x; LinkList A,p; n=14;m=11;
A=Creat_LinkList1(n ); printf_LinkList(A); printf(\ for(i=0;i<5;i++) {
scanf(\ p=Locata(A,x);
printf(\ printf_LinkList(A); } }
五 上机实习题目
22
1. Josephu 问题
Josephu 问题为:设编号为1,2,? n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,