logo资料库

数据结构,约瑟夫环.,实验报告c语言.docx

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
约瑟夫环实验报告 班级:计算机 092 学号:0908140828 姓名:王仰仰 1. 实验题目 约瑟夫环问题 2.数据类型 typedef struct LNode{ int data; struct LNode *next; //数据域 //指针域 }LNode; typedef LNode *LinkList; 2. 算法描述 伪代码算法描述: 1. 初始化单链表 2. 单链表中删除 3. 约瑟夫环 for(k=0 ; L->next!=L ;){ 1.遇到出圈的人则删除 2.判断 p 是否是尾节点,如果是,则跳过 } 算法描述: void CreateList (LinkList &L,int n){ // 逆序创建表,把序号放入 data 中 L = new LNode; L->next=L; int i; LNode *p; for(i=1;idata = i; p ->next = L->next; L ->next = p; } }//CreateList void ListDelete(LNode *r, int &e){ LNode *p,*q; p = r; q = p ->next; //q 指向被删除结点 e = q->data; //取出删除结点的 data p ->next = q ->next; delete q; }
void yuesefu(int n,int m){ int num,k; LinkList L; LNode *p,*q; CreateList( L , n); p=L; q=L->next; for(k=0 ; L->next!=L ;){ k++; if(k==m){ q=q->next; ListDelete(p,num); cout<next==L) p=L; q= p->next; } L = new LNode; L->next=L; int i; LNode *p; for(i=1;idata = i; p ->next = L->next; L ->next = p; } }//CreateList //判断 p 是否是尾节点,如果是,则跳过 } 4.程序清单 #include using namespace std; typedef struct LNode{ int data; struct LNode *next; //数据域 //指针域 }LNode; typedef LNode *LinkList; void CreateList (LinkList &L,int n){ // 逆序创建表,把序号放入 data 中
} } void yuesefu(int n,int m){ int num,k; LinkList L; LNode *p,*q; CreateList( L , n); p=L; q=L->next; for(k=0 ; L->next!=L ;){ k++; if(k==m){ q=q->next; ListDelete(p,num); cout<next==L) p=L; q= p->next; } void ListDelete(LNode *r, int &e){ LNode *p,*q; p = r; q = p ->next; //q 指向被删除结点 e = q->data; //取出删除结点的 data p ->next = q ->next; delete q; //判断 p 是否是尾节点,如果是,则跳过 void main(){ int n,m; cout<<"输入总人数:"<>n; cout<<"输入出圈的人:"<>m; cout<<"出圈的顺序:"<
分享到:
收藏