数据结构实验报告(实验二 约瑟夫环)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

韶关学院

学生实验报告册

实验课程名称:数据结构与算法

实验项目名称:实验二线性表及其应用

约瑟夫环

实验类型(打√):(基础、综合、设计√)

院系:信息工程学院计算机系专业:*****

姓名:*** 学号:*****

指导老师:陈正铭

韶关学院教务处编制

一、实验预习报告内容

二、实验原始(数据)记录

实验时间:2007 年 4 月 4 日(星期三第7,8 节)实验同组人:

三、实验报告内容

2007年4 月5 日

注:1、如有个别实验的实验报告内容多,实验报告册页面不够写,或有识图,画图要求的,学生应根据实验指导老师要求另附相同规格的纸张并粘贴在相应的“实验报告册”中。

2、实验报告册属教学运行材料,院系(中心)应按有关规定归档保管。

【源程序】

#include "stdio.h"

#include "conio.h"

#include "stdlib.h"

/* 设立无头结点的单循环链表*/ typedef struct LNode{

int id; /* 编号*/

int pw; /* 密码*/

struct LNode *next;

}LNode,*LinkList;

void main()

{

int m,n,pw,i=1,j=0; /* m为初始报数值,n 为参与人数,pw为密码临时保存变量,i、j 为循环变量*/

LinkList L,p,q; /* L为链表头指针,p、q为临时指针*/

printf("输入人数n(n>0):");

scanf("%d",&n);

printf("输入第1 人密码:");

scanf("%d",&pw);

L=(LinkList)malloc(sizeof(struct LNode)); L->id=i;

L->pw=pw;

L->next=L; /* 创建首结点*/

q=L; /* q指向尾结点*/

p=L; /* p指向待删除结点前驱*/

for(i=2;i<=n;i++) /* 依次输入第2……第n个参与者密码*/

{

printf("输入第%d 人密码:",i);

scanf("%d",&pw);

p=(LinkList)malloc(sizeof(struct LNode));

p->id=i;

p->pw=pw; /* 创建第i个参与者结点p */

q->next=p; /* 在尾结点q后插入新结点p */

q=p; /* 更新q指向新的尾结点p */

p->next=L; /* 新结点p的后继指针指向首结点*/

}

printf("输入约瑟夫环的初始报数值m:"); scanf("%d",&m);

printf("出列顺序为:");

for(i=1;i<=n;i++) /* n个参与者依次按规则出列*/

{

for(j=1;jnext; /* p 指向待删除结点前驱*/

q=p->next;

/* q指向待删除结点*/

p->next=q->next;

/* 删除结点q */

printf("%d\t",q->id); /* 输出被删结点编号*/

m=q->pw;

/* m更新为被删结点的密码值*/

free(q);

/* 释放被删结点q */

}

getch();

}

相关文档
最新文档