鱼C论坛

 找回密码
 立即注册
查看: 3809|回复: 5

[技术交流] 线性表13课 作业练习

[复制链接]
发表于 2013-5-24 09:54:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请高手们指正。

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define M 41

typedef struct s
{
          int data;
          struct s *next;

}node;

node *chushihua();                       //初始化约瑟夫环
void shuchu(node *phead);          //输出
void zisha(node *phead);             //随机输出自杀人的编号

void main()
{
          node *phead;
          int i=1;

          phead=chushihua();
          shuchu(phead);
          zisha(phead);
          
}

node *chushihua()                 //初始化约瑟夫环
{
          node *head,*p,*p1;
          int i;

          head=p=p1=NULL;
      for(i=1; i<=M; i++)
          {
                        p=(node *)malloc(sizeof(node));
                        if(i==1)
                        {
                                  head=p;
                                  p->data =i;
                        }
                        else
                        {
                                  p1->next =p;
                                  p->data =i;
                        }
                       p1=p;
          }
          p->next =head;
          return head;

}

void shuchu(node *phead)          //输出
{
          node *p=phead;
          
          do
          {
                        printf("%5d",p->data );
                        p=p->next ;
          }
         while(phead!=p );
         printf("\n\n");
}

void zisha(node *phead)                      //随机输出自杀人的编号
{
          int i,n,x=0,j;
          node *p=phead,*ptemp;

          while(p!=p->next)
          {
                       do
                        {
                                  printf("请输入每数几个人开始自杀:");
                                  scanf("%d",&n);
                                  if(n<=0)
                                  {
                                              printf("你输入的有误请重新输入\n\n");
                                  }             
                        }
                        while(n<=0);

                        if(n==1)
                        {
                                  for(j=1; j<M-x; j++)
                                  {
                                          p=p->next ;
                                  }
                        }
                        else
                        {
                                  for(i=1; i<n-1; i++)
                                  {
                                            p=p->next ;
                                  }  
                        }
                        printf("%d号自杀去\n\n",p->next->data);
                        ptemp=p->next;
                        p->next=ptemp->next;
                        free(ptemp);
                        x++;                        //表示删除链表的个数
                        p=p->next;       
          }
          printf("%d号自杀去\n\n",p->data);
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-24 13:30:54 | 显示全部楼层
我只是路过打酱油的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-5-24 13:49:17 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-5-24 14:55:54 | 显示全部楼层
感恩无私的分享与奉献 :)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-5-24 14:58:45 | 显示全部楼层
感恩无私的分享与奉献 :)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-5-24 21:42:52 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 23:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表