|
> {ソースの添付は「HTML変換ツール」で字下げ!}について、意味よく分からないですよ。
とりあえず推測で,コンパイルが通るように直してみました。
これなら読める?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define kBufferSize (32768)
typedef struct _NODE NODE, *NODEPtr;
struct _NODE {
char *line;
NODEPtr next;
};
int RemoveReturnCode( char *str );
NODEPtr MakeNode( char *str );
int FreeNodeList( NODEPtr node );
void FreeNode( NODEPtr node );
int PrintNodeList( NODEPtr node );
NODEPtr ReverseNodeList( NODEPtr node );
int main( void ){
char buffer[ kBufferSize ];
NODEPtr head;
head = NULL;
while ( NULL != fgets( buffer, kBufferSize, stdin ) ) {
NODEPtr pivot;
RemoveReturnCode( buffer );
pivot = MakeNode( buffer );
if ( pivot == NULL ) {
FreeNodeList( head );
return 1;
}
pivot->next = head;
head = pivot;
}
PrintNodeList( head );
head = ReverseNodeList( head );
PrintNodeList( head );
FreeNodeList( head );
return 0;
}
int RemoveReturnCode( char *str ) {
char *p;
if ( str == NULL ) return -1;
for ( p = str; *p != '\n' && *p != '\r' && *p != '\0'; p++ )
;
*p = '\0';
// return p Б str;
return p - str;
}
NODEPtr MakeNode( char *str ) {
NODEPtr node;
if ( str == NULL ) return NULL;
node = ( NODEPtr ) calloc( 1, sizeof( NODE ) );
if ( node != NULL ) {
node->line = ( char * ) calloc( strlen( str ) + 1,sizeof( char ) );
if ( node->line != NULL) {
strcpy( node->line, str );
node->next = NULL;
}
else {
free( node );
node = NULL ;
}
}
return node;
}
int FreeNodeList( NODEPtr node ) {
int ct;
ct = 0;
while ( node != NULL ) {
NODEPtr next;
next = node->next;
FreeNode( node );
ct++;
node = next;
}
return ct;
}
void FreeNode ( NODEPtr node ) {
free( node->line );
free( node );
}
int PrintNodeList( NODEPtr node ){
int ct;
for ( ct = 0; node != NULL; ct++, node = node->next )
printf("%d: %s\n", ct+1, node->line );
return ct;
}
NODEPtr ReverseNodeList( NODEPtr node ) {
NODEPtr reverse;
reverse = NULL;
while ( node != NULL ) {
NODEPtr next;
next = node->next;
node->next = reverse;
reverse = node;
node = next;
}
return reverse;
}
|