约瑟夫问题的循环链表解法 C/C++
/*
title:约瑟夫问题的循环链表解法
author:coolsky600
date:2010 04 22
notice:c语言 面向过程
*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int num; //全局变量围圈人数
int out; //出去的初始号码
typedef struct Node //定义座位结构体
{
int num;
struct Node *next;
};
Node *creat() //初始化循环链表
{
extern int num; //声明全局变量
extern int out; //声明全局变量
int i,flag=0;
Node *p1,*p2,*head;
printf("一共几个人围圈?");
scanf("%d",&num);
printf("开始第几个出去?");
scanf("%d",&out);
head=p1=p2=(Node *)malloc(sizeof(Node));
head->num=0; //第一个节点值为 0
for(i=0;i<num-1;i++) //再生成nun-1个节点连入链表
{
p1=(Node *)malloc(sizeof(Node));
p1->num=i+1;
p2->next=p1;
p2=p1;
flag++; //flag用于区别第一个节点
}
p2->next=head;
return head;
}
void show(Node *head) //显示出局的顺序
{
extern int out; //声明全局变量
extern int num; //声明全局变量
Node *p,*p1;
p=head;
int i,j;
for(j=1;j<num;j++) //控制输出的次数为num-1
{
for(i=0;i<out-1;i++) //以当前p指针围基准以num-1为偏移量找到下一个出具的人
{
p=p->next;
}
p1=p->next;
out=p1->num; //将出局号码赋给
相关文档:
3.2 高效率测试:四两拔千斤
上一节介绍了一些似是而非的高效率方法,那么,怎样才能真正高效率测试呢?真正的高效率,不能忽略人的智慧这一关键因素。
由于工具不可能自动了解代码的设计功能,只有人才了解,因此,只有人的智慧及时介入,工具才能做正确的事情,才能达到真正的高效率。
&nb ......
在网上找到的一个程序
[c]
#include <stdio.h>
#include <sys/types.h>
#include <regex.h>
/* 取子串的函数 */
static char* substr(const char*str,unsigned start, unsigned end)
{
unsigned n = end - start;
static char stbuf[256]; ......