数据结构第2章参考答案08

内容发布更新时间 : 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->freqprior; /*查找频度不小于Y的结点*/ if(q->freq>=f||q==A) {q=q->next; /*交换两结点*/ y=p->data; p->data=q->data; p->freq=q->freq; q->data=y; q->freq=f; } }

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的那个人又出列,依次类推,

>>展开全文<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi