#include<stdio.h>
#include<stdlib.h>
typedef struct Syracuse
{
int value;
struct Syracuse *next;
} Syracuse_t;
void display_SyracuseSeq(Syracuse_t *ptrL);//頭指標ptrL,作用帶替printf輸出序列
Syracuse_t * create_SyracuseSeq(int n);//運行函式,當值到1就結束
void destroy_SyracuseSeq(Syracuse_t **adptrL);//釋放記憶體函式
int main(int agrc, char *argv[])//argc記錄了用戶在運行程式的命令列中輸入的引數的個數。
{
Syracuse_t *ptrL;
int n=4; // value of u0
ptrL=create_SyracuseSeq(n);
display_SyracuseSeq(ptrL);
destroy_SyracuseSeq(&ptrL);
return EXIT_SUCCESS;
}
void display_SyracuseSeq(Syracuse_t *ptrL)//頭指標ptrL,作用帶替printf輸出序列
{
Syracuse_t *p;
p=ptrL;
printf("Syracuse sequence starts with: ");
while(p)//->value!=1)
{
printf(" %d ", p->value);
p=ptrL->next;
}
printf(" %d ", p->value);
printf("\n");
}
Syracuse_t * create_SyracuseSeq(int n)
{
Syracuse_t *ptrL;
Syracuse_t *p;
ptrL=(Syracuse_t * )malloc(sizeof(Syracuse_t));
ptrL->value=https://bbs.csdn.net/topics/n;
ptrL->next=NULL;
while(ptrL&&ptrL->value!=1)
{
p=(Syracuse_t * )malloc(sizeof(Syracuse_t));
if (n%2 == 0)
p->value = n/2;
else
p->value = 3*n + 1;
ptrL->next=p;
p->next=NULL;
ptrL=p;
}
return ptrL;
}
void destroy_SyracuseSeq(Syracuse_t **adptrL)
{
Syracuse_t *p;
p=*adpptrL->next;
while(p!=NUll)
{
adpptrL->next=&(p->next);
free(p);
p=*adpptrL->next;
}
}
uj5u.com熱心網友回復:
修改如下,供參考:#include<stdio.h>
#include<stdlib.h>
typedef struct Syracuse
{
int value;
struct Syracuse *next;
} Syracuse_t;
void display_SyracuseSeq(Syracuse_t *ptrL);//頭指標ptrL,作用帶替printf輸出序列
Syracuse_t * create_SyracuseSeq(int n);//運行函式,當值到1就結束
void destroy_SyracuseSeq(Syracuse_t **adptrL);//釋放記憶體函式
int main(int agrc, char *argv[])//argc記錄了用戶在運行程式的命令列中輸入的引數的個數。
{
Syracuse_t *ptrL;
int n=4; // value of u0
ptrL=create_SyracuseSeq(n);
display_SyracuseSeq(ptrL);
destroy_SyracuseSeq(&ptrL);
display_SyracuseSeq(ptrL);
return EXIT_SUCCESS;
}
void display_SyracuseSeq(Syracuse_t *ptrL)//頭指標ptrL,作用帶替printf輸出序列
{
Syracuse_t *p;
p=ptrL->next; //p=ptrL;
printf("Syracuse sequence starts with: ");
while(p) //->value!=1)
{
printf(" %d ", p->value);
p=p->next;
}
//printf(" %d ", p->value);
printf("\n");
}
Syracuse_t * create_SyracuseSeq(int n)
{
Syracuse_t *ptrL,*tail;
Syracuse_t *p;
ptrL=(Syracuse_t * )malloc(sizeof(Syracuse_t));
ptrL->value=https://bbs.csdn.net/topics/n;
ptrL->next=NULL;
tail=ptrL;
while(n >= 1)//while(ptrL&&ptrL->value!=1)
{
p=(Syracuse_t * )malloc(sizeof(Syracuse_t));
if (n%2 == 0)
p->value = n/2;
else
p->value = 3*n + 1;
p->next=NULL;
tail->next=p;
tail=p;
n--;
}
return ptrL;
}
void destroy_SyracuseSeq(Syracuse_t **adptrL)
{
Syracuse_t *p;
p=(*adptrL)->next;
while(p!=NULL) //NUll
{
(*adptrL)->next=p->next;
free(p);
p=(*adptrL)->next;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/280762.html
標籤:C語言
上一篇:jmu第13小組作業
下一篇:關于結構體指標定義指標變數
