鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 小甲鱼

第二十讲 线性表15(视频+课件+源代码)

[复制链接]
发表于 2015-11-7 13:14:22 | 显示全部楼层
1136736388 发表于 2015-5-21 21:10
拉丁方阵  没有源代码。。。。。楼主加油,鱼C加油!我们都看好你哦!

我有 自己写的
  1. /************************************************************************/
  2. /* 2015年11月7日11:53:57
  3. 功能:实现拉丁方阵
  4. 目的:由于是自己写的,那么就是练习一下自己的循环链表的操作与创建.*/
  5. /************************************************************************/
  6. # include<stdio.h>
  7. # include<stdlib.h>
  8. # include<stdbool.h>


  9. typedef struct node
  10. {
  11.         int data;
  12.         struct node * pNext;
  13. }Node,*pNode;

  14. pNode create_loop_list(int n);
  15. void traverse_loop_list(pNode);

  16. int main(void)
  17. {
  18.         //pNode pHead;
  19.         int i = 0;
  20.         int n = 0;
  21.         //int *a = 0;
  22.         printf("请输入拉丁方阵的边数:n = ");
  23.         scanf("%d", &n);
  24.         printf("\n");
  25.         pNode pRear = create_loop_list(n);
  26.         //traverse_loop_list(pRear);
  27.         printf("拉丁方阵如下:\n");
  28.         for (i = 0; i < n ; ++i)
  29.         {
  30.                 pRear = pRear->pNext;
  31.                 traverse_loop_list(pRear);

  32.         }
  33.         return 0;
  34. }

  35. pNode create_loop_list(int n)
  36. {
  37.         //int n = 0;
  38.         int i = 0;
  39.         int cunt = 0;
  40.         pNode pHead = (pNode)malloc(sizeof(Node));
  41.         if (NULL == pHead)
  42.         {
  43.                 printf("\a内存分配失败!!");
  44.                 exit(-1);
  45.         }
  46.         pNode pTail = pHead;
  47.         pTail->pNext = NULL;


  48.          //a = &n;

  49.         for (i = 0; i < n; ++i)
  50.         {
  51.                 pNode pNew = (pNode)malloc(sizeof(Node));
  52.                 if (NULL == pNew)
  53.                 {
  54.                         printf("\a内存分配失败!!");
  55.                         exit(-1);
  56.                 }
  57.                 pNew->data = i+1 ;
  58.                 pTail->pNext = pNew;
  59.                 pNew->pNext = NULL;

  60.                 pTail = pNew;

  61.         }
  62.         pNode p = pHead;
  63.         pTail->pNext = p->pNext;
  64.         //pTail = p->pNext;
  65.         free(p);
  66.         p = NULL;
  67.         return pTail;
  68. }

  69. void traverse_loop_list(pNode pRear)
  70. {
  71.         pNode p = pRear;
  72.         pNode q = pRear->pNext;
  73.         printf("%2d", p->data);
  74.         while (p != q)
  75.         {
  76.                 printf("%3d",q->data);
  77.                 q = q->pNext;
  78.         }
  79.        
  80.         printf("\n");
  81. }

  82. /************************************************************************/
  83. /* 在VS2013中程序运行如下:
  84. 请输入拉丁方阵的边数:n = 9

  85. 拉丁方阵如下:
  86. 1 2 3 4 5 6 7 8 9
  87. 2 3 4 5 6 7 8 9 1
  88. 3 4 5 6 7 8 9 1 2
  89. 4 5 6 7 8 9 1 2 3
  90. 5 6 7 8 9 1 2 3 4
  91. 6 7 8 9 1 2 3 4 5
  92. 7 8 9 1 2 3 4 5 6
  93. 8 9 1 2 3 4 5 6 7
  94. 9 1 2 3 4 5 6 7 8
  95. 请按任意键继续. . .                                                                     */
  96. /************************************************************************/
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-6 21:11:30 | 显示全部楼层
xuexi
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-13 12:06:37 | 显示全部楼层
顶下小甲鱼~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-25 22:47:46 | 显示全部楼层
谢谢小甲鱼老湿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-13 14:23:30 | 显示全部楼层
为什么我觉得第56行的    j--;   应该删掉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-15 15:29:48 | 显示全部楼层
Latin方阵代码
#include<stdio.h>
#include<stdlib.h>

#define LEN sizeof(LinkList)

typedef struct node
{
        int data;
        struct node *next;
}LinkList;

LinkList *CreatList(int num) //生成循环链表
{
        int i;
        LinkList *head = NULL;
        LinkList *p,*s;
       
        for(i = 1; i <= num; i++)
        {
                s = (LinkList *)malloc(LEN);
                s->data = i;
               
                if(head == NULL)
                {
                        head = s;
                }
                else
                {
                        p->next = s;
                }
                p = s;
        }
        p->next = head;
        return head;
}

int main(void)
{
        LinkList *p;
        LinkList *s;
        int num;
        int i,j;
       
    printf("请输入想要创建的Latin维数:");
        scanf("%d",&num);
        p = CreatList(num);
        printf("  %d维Latin:\n",num);
       
        for(i=0; i < num; i++)
        {
                for(j=0; j < num; j++)
                {
                        printf("%3d",p->data);
                        p = p->next;
                }
                p = p->next;
                printf("\n");
        }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2021-2-15 20:15:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-17 00:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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