69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#define LEN 13 //数组长度
typedef struct date
{
int num;
struct date *next;
}DATE;
DATE *Create(DATE *head);
void Game( int* a );
void main()
{
int a[LEN],i;
Game(a);
for ( i=0; i<LEN; i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
void Game( int* a )
{
DATE *head,*tail,*p1,*p2;
int i=1;
head = (DATE*)malloc(sizeof(DATE)); //我如果这里没有对head分配内存,就用函数传递指针的话执行时出现内存问题
if ( head == NULL )
{
printf("分配内存失败\n");
exit(1);
}
tail = Create(head);
p1 = head;
while ( p1->next != NULL )
{
p2 = p1->next;
a[p2->num] = i++;
tail->next = p1;
tail = p1;
tail->next = NULL;
p1 = p2->next;
free(p2);
}
a[p1->num] = i;
free(p1);
}
DATE *Create(DATE *head)
{
DATE *p1,*p2;
int i=0;
//在这里给head分配内存不行
p1 = head;
while ( i < LEN )
{
p1->num = i++;
p2 = p1;
p1 = (DATE*)malloc(sizeof(DATE));
if( p1 == NULL )
{
printf("分配内存失败\n");
exit(1);
}
p2->next = p1;
}
free(p1); //最后分配的一个节点实际上没有用到;
p2->next = NULL;
return p2;//返回的是指向最后的那个节点
}
void Game( int* a )
{
DATE *head,*tail,*p1,*p2;
int i=1;
head = (DATE*)malloc(sizeof(DATE)); //我如果这里没有对head分配内存,就用函数传递指针的话执行时出现内存问题
if ( head == NULL )
{
printf("分配内存失败\n");
exit(1);
}
tail = Create(head);