进入分析代码模式

来源:互联网 发布:淘宝二合一口令 编辑:程序博客网 时间:2024/06/05 20:19

1620-7  唐大智《2016年12月8日》[连续第六十八天总结]

标题:进入分析代码模式

关键词:题目,分析

内容:

(A)

n人围一圈,他们的序号依次为1,2,3...,n,从第一个人开始顺序报数1,2,3,...,m,报道m者退出圈子,依次直到圈子剩下最后一个人。

#include<iostream.h>

struct Node{

int x;//围成一圈时,人的序号。

Node *next;

};

Node *DelNode(Node *head, int m)//依次输出循环链表中凡报到m者的序号

{Node *p;

int count;

if(head==NULL) return head;

while(head !=head->next){//直到链表上只有一个节点

count=0;

while(count<m-2){

count++;

head=head->next;

}

p=head->next;//删除p所指向的节点

head->next=p->next;

head=head->next;

cout<<p->x<<endl;

delete p;

}

return head;

}

void main(void)//构造循环链表,调用DelNode函数依次输出报到m的人的序号

{

Node *head, *p;//输出最后留在圈里的人的序号

int i;

head =new Node;

head->x=1;

head->next=NULL;

p=head;

for(i=2;i<=10;i++){

p->next=new Node;//新节点加入链表

p=p->next;

p->x=i;

}

p->next=head;//构成循环链表

head=DelNode(head,5);

cout<<"最后一个人为:"<<head->x<<endl;

}

(B)主要是构造循环链表,循环链表的尾节点的指针项next不能为空,要保证首节点的地址,通过循环将数据按题目要求赋值为1,2....,10,指针p一直指向新建立的节点。当p指向尾节点时,将首节点地址赋值给next项;即p->next=head.

(C)明日计划:多背一些英语作文,多写一些代码准备期末。


0 0