输入一行数目未知的数字(不一定是1位数),如:1 12 333 45 677 889;88 98 3 47等。
要求倒序输出这一行数字,比如上面的例子就得输出:
889 677 45 333 12 1
另一个 47 3 98 88
如有必要 请加上注释 谢谢!
输入一行数目未知的数字(不一定是1位数),如:1 12 333 45 677 889;88 98 3 47等。
要求倒序输出这一行数字,比如上面的例子就得输出:
889 677 45 333 12 1
另一个 47 3 98 88
如有必要 请加上注释 谢谢!
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define MAX_CHARLEN 100
#define NODE_EMPTY 1
#define NODE_FULL 0
typedef struct _Diy_list_t
{
char str[MAX_CHARLEN];
struct _Diy_list_t *next;
struct _Diy_list_t *prev;
}Diy_list_t;
Diy_list_t Diy_head,Diy_tail;
Diy_list_t* Diy_createNode();
void Diy_gets();
void Diy_puts();
int main()
{
Diy_gets();
Diy_puts();
return 0;
}
Diy_list_t* Diy_createNode()
{
Diy_list_t *p = NULL;
p = (Diy_list_t*)malloc(sizeof(Diy_list_t));
p->next = NULL;
p->prev = NULL;
if(Diy_head.next == NULL){
Diy_head.next = p;
Diy_tail.prev = p;
}else{
Diy_tail.prev->next = p;
p->prev = Diy_tail.prev;
Diy_tail.prev = p;
}
return p;
}
void Diy_gets()
{
char c;
int i = 0;
int flag = NODE_FULL;
Diy_list_t *pInsert = NULL;
pInsert = Diy_createNode();
while((c = getchar()) != '\n'){
if(c == ' ' && flag == NODE_FULL){
if(pInsert != NULL){
pInsert->str[i] = '\0';
}
pInsert = Diy_createNode();
memset(pInsert->str,0,sizeof(pInsert->str));
i = 0;
flag = NODE_EMPTY;
}
pInsert->str[i++] = c;
flag = NODE_FULL;
}
}
void Diy_puts()
{
while(Diy_tail.prev != NULL){
printf("%s ",Diy_tail.prev->str);
Diy_tail.prev = Diy_tail.prev->prev;
}
}