c++输入N个同学的姓名,按照字母顺序排序
展开全部
//////////////////////////////////////////////////////
// 动态链表人名排序
//
//功能介绍:输入10个人名,按ASCII排序输出。
// 再输入第11个人名,11个人名排序输出。
// 第12、13...依此类推
/////////////////////////////////////////////////////
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define N 21 //字符串长度
struct node
{
char str[N];
struct node *next;
};
void print( struct node *p ); //函数定义
void sort( struct node *p );
void swap( struct node *s1, struct node *s2 );
void main( )
{
struct node *head=NULL, *p, *p1;
char a[N];
int num = 0; //字符串个数标记
printf( "输入10个字符串,回车换行:\n" );
while( num<10 )
{
scanf( "%s",&a );
p = ( struct node *) malloc( sizeof( struct node ) );
strcpy( p->str,a );
if( head == NULL )
{
head = p;
p1 = p;
}
else
{
p1->next = p;
p1 = p;
}
num = num + 1;
}
p->next = NULL;
sort( head ); //字符串比较排序
print( head ); //输出打印字符串
while( 1 ) //死循环
{
printf( "输入字符串: " );
scanf( "%s",&a );
p = ( struct node *) malloc( sizeof( struct node ) );
strcpy( p->str,a );
p1->next = p;
p1 = p;
p->next = NULL;
sort( head );
print( head );
}
}
void sort( struct node *p ) //字符串比较排序
{
struct node *p1, *p2;
p1 = p;
while( p1 != NULL )
{
p2 = p1->next;
while( p2 != NULL )
{
if( strcmp( (p1->str),(p2->str) ) > 0 )
{
swap( p1,p2 ); //字符串交换
}
p2 = p2->next;
}
p1 = p1->next;
}
}
void swap( struct node *s1, struct node *s2 ) //字符串交换
{
struct node temp1,temp2;
temp1 = *s1;
temp1.next = s2->next;
temp2 = *s2;
temp2.next = s1->next;
*s1 = temp2;
*s2 = temp1;
}
void print( struct node *p ) //字符串输出
{
printf( "\n" );
while( p !=NULL )
{
puts( p->str );
p = p->next;
}
printf( "\n" );
}
// 动态链表人名排序
//
//功能介绍:输入10个人名,按ASCII排序输出。
// 再输入第11个人名,11个人名排序输出。
// 第12、13...依此类推
/////////////////////////////////////////////////////
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define N 21 //字符串长度
struct node
{
char str[N];
struct node *next;
};
void print( struct node *p ); //函数定义
void sort( struct node *p );
void swap( struct node *s1, struct node *s2 );
void main( )
{
struct node *head=NULL, *p, *p1;
char a[N];
int num = 0; //字符串个数标记
printf( "输入10个字符串,回车换行:\n" );
while( num<10 )
{
scanf( "%s",&a );
p = ( struct node *) malloc( sizeof( struct node ) );
strcpy( p->str,a );
if( head == NULL )
{
head = p;
p1 = p;
}
else
{
p1->next = p;
p1 = p;
}
num = num + 1;
}
p->next = NULL;
sort( head ); //字符串比较排序
print( head ); //输出打印字符串
while( 1 ) //死循环
{
printf( "输入字符串: " );
scanf( "%s",&a );
p = ( struct node *) malloc( sizeof( struct node ) );
strcpy( p->str,a );
p1->next = p;
p1 = p;
p->next = NULL;
sort( head );
print( head );
}
}
void sort( struct node *p ) //字符串比较排序
{
struct node *p1, *p2;
p1 = p;
while( p1 != NULL )
{
p2 = p1->next;
while( p2 != NULL )
{
if( strcmp( (p1->str),(p2->str) ) > 0 )
{
swap( p1,p2 ); //字符串交换
}
p2 = p2->next;
}
p1 = p1->next;
}
}
void swap( struct node *s1, struct node *s2 ) //字符串交换
{
struct node temp1,temp2;
temp1 = *s1;
temp1.next = s2->next;
temp2 = *s2;
temp2.next = s1->next;
*s1 = temp2;
*s2 = temp1;
}
void print( struct node *p ) //字符串输出
{
printf( "\n" );
while( p !=NULL )
{
puts( p->str );
p = p->next;
}
printf( "\n" );
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询