鱼C论坛

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

拉丁方阵显示 N*N 用链表怎么实现

[复制链接]
发表于 2013-5-1 21:41:57 | 显示全部楼层 |阅读模式

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

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

x
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. #define CardNumber 9

  4. typedef struct node
  5. {
  6. int data;
  7. struct node *next;
  8. }sqlist, *linklist;

  9. linklist CreateLinkList()
  10. {
  11. linklist head = NULL;
  12. linklist s, r;
  13. int i;

  14. r = head;

  15. for(i=1; i <=CardNumber; i++)
  16. {


  17. s = (linklist)malloc(sizeof(sqlist));
  18. s->data = 0;

  19. if(head == NULL)
  20. head = s;
  21. else
  22. r->next = s;

  23. r = s;

  24. }

  25. r->next = head;

  26. return head;
  27. }

  28. // 链表拉丁排序
  29. void Magician(linklist head)
  30. {
  31. linklist p;
  32. int i;
  33. int j;
  34. int Countnumber = 9;

  35. p = head;
  36. p->data = 1; //第一个数是1

  37. for(i=1;i<Countnumber;i++)
  38. {
  39. for(j=i; j <= Countnumber+i; j++)
  40. {

  41. p = p->next;
  42. /* if(p->data != 0) //该位置有数,则下一个位置
  43. {
  44. p->next;
  45. j--;
  46. }*/
  47. p->data=(j-1)%Countnumber+1;
  48. // printf("%3d",(j-1)%Countnumber+1);

  49. }
  50. printf("\n");

  51. /* if(p->data == 0)
  52. {
  53. p->data = (j-1)%Countnumber+1;
  54. Countnumber ++;

  55. if(Countnumber == 14)
  56. break;
  57. }*/
  58. }
  59. }



  60. int main()
  61. {
  62. linklist p;
  63. int i;
  64. int j;
  65. p = CreateLinkList();
  66. Magician(p);

  67. printf("按如下顺序排列:\n");
  68. for (i=1; i < CardNumber; i++)
  69. {
  70. for(j=i;j<=CardNumber+i;j++)
  71. {
  72. printf("%3d", p->data);
  73. p = p->next;
  74. }
  75. printf("\n");
  76. }



  77. return 0;
  78. }
复制代码
怎么多一列了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-7 18:53:45 | 显示全部楼层
你的写的怎么那么复杂,用循环单链表,每行遍历输出不就行了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-5-7 19:10:34 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-8 02:32:27 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-8 13:26:55 | 显示全部楼层
乄ヤ灬风 发表于 2013-5-7 19:10
怎么遍历呀?

第一行是1--n,第二行就是2--n--1,第三行3--2,以此类推,也就是设一个循环单链表,下一行就是上一行向前推进一个数,由于是循环链表,推进的数就排到表尾部去了,直到n行为止,具体代码,改天给你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-8 13:37:36 | 显示全部楼层
沒看明白,繼續學習。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-3-28 16:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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