本文共 1536 字,大约阅读时间需要 5 分钟。
#include "stdio.h"#include "stdbool.h"#include "string.h"#include "math.h"#include "stdlib.h"#include "stdarg.h"#include "time.h"typedef int Elemtype;typedef int Status;typedef struct node{ Elemtype data; struct node* next;} Node;typedef struct node* LinkList;void CreatLatin(LinkList *CL,int num);void DeleteList(LinkList *CL);int main(void){ LinkList List; int i,n; printf("1.创建拉丁方阵\n2.释放当前方阵内存\n 输入0退出 \n"); while(i != 0) { scanf("%d",&i); switch(i) { case 1: printf("要创建n*n的方阵?\n请输入n = "); scanf("%d",&n); putchar('\n'); CreatLatin(&List,n); break; case 2: DeleteList(&List); break; } } return 0;}void CreatLatin(LinkList *CL,int n){ LinkList temp,rear,p; *CL = (LinkList)malloc(sizeof(Node)); (*CL)->next = *CL; rear = *CL; for(int i = 0 ; i < n ; i++) { temp = (LinkList)malloc(sizeof(Node)); temp->data = i+1; temp->next = rear->next; rear->next = temp; rear = temp; } rear->next = (*CL)->next; p = (*CL)->next; for(int j = 0;j < n;j++) { for(int k = 0;k < n;k++) { printf("%d ",p->data); p = p->next; } putchar('\n'); p = p->next; } putchar('\n');}void DeleteList(LinkList *CL){ LinkList temp,temp1; int count = 2; temp = (*CL)->next; temp1 = *CL; while(temp->next != (*CL)->next) { temp = temp->next; count++; } LinkList buff[count]; for(int i = 0;i < count;i++) { buff[i] = temp1; temp1 = temp1->next; } for(int i = 0; i < count;i++) { free(buff[i]); } *CL = 0; printf("释放了%d个结点\n",count);}
转载地址:http://tcgtz.baihongyu.com/