回复 4楼 wp231957
临时写的,其他部分你要自己完成,我只完成了插入和打印。
你需要自己完成释放内存,当然这个程序只运行一次,释放与否无所谓,另外输入函数自己造个轮子比较好,我用的gets()只是为了测试。
另外还要进行空字符串检查。我没写,但是很简单,一个if就够了。
测试数据没有完全输入,但是这一部分应该够了。
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct NODE {
char *str;
struct NODE *Next;
}Node;
int
insert( Node **RootP, const char *src );
void
print_list( Node *RootP );
int
main( void )
{
Node *RootP;
char src[ 100 ];
RootP = NULL;
while( gets( src ) && '\0' != src[ 0 ] )
{
insert( &RootP, src );
}
print_list( RootP );
return 0;
}
int
insert( Node **RootP, const char *src )
{
Node *next;
Node *new;
for( next = *RootP; NULL != next;next = *RootP )
{
if( strcmp( next->str, src ) > 0 )
break;
RootP = &next->Next;
}
new = ( Node * )malloc( sizeof( Node ) );
if( NULL == new )
return 0;
new->Next = next;
new->str = strdup( src );
*RootP = new;
return 1;
}
void
print_list( Node *RootP )
{
Node *next;
for( next = RootP; NULL != next; next = RootP )
{
printf( "%s\n", next->str );
RootP = next->Next;
}
}
[此贴子已经被作者于2017-3-13 18:10编辑过]