问题 F: 实验11_15_拆分链表

题目描述

已知有一个乱序的字符序列L,序列中的字符可能是英文字母、数字字符或其它字符,字符的个数未知,每个字符之间用空格分开。字符序列用“-1”作为输入结束标志,这里你要把-1当做一个字符串对待,并且不算作字符序列中的元素。如下即为一个合法的字符序列:“a c 3 b a d 6 , & j m 8 7 2 V -1”。你的任务是将这个字符序列拆分为三个独立的序列A、B和C,其中序列A存放序列L中的字母,序列B存放序列L中的数字,序列C存放序列L中的其他字符,然后,将序列A、B和C分别按照ASCII码的大小关系进行升序排序。最终序列L将变为空序列。
要求:
建立四个单链表,分别存储序列L、A、B、C中的元素。字符序列的输入用“-1”作为结束标志。建立链表L时,建议使用scanf(“%s”,s);来读取字符序列中的字符,即把单独的字符看做一个字符串读取。当L建立后,你要按照问题描述中所述,将L拆分为A、B、C三个链表,然后对每个链表都进行排序,这部分的操作都应该是对指针进行修改,而不是删除节点与建立新节点。在程序结束前要释放链表A、B、C中的所有节点。

输入

一个乱序的字符序列,序列元素的个数未知,以输入“-1”结束,输入“-1”前可能没有其它元素,每个字符序列占一行。

输出

链表A中的元素,占一行;然后是链表B中的元素,占一行。最后是链表C中的元素,占一行。每行的每个元素后有一个空格,注意最后一个元素后只有换行符,如果某个链表为空则,则输出“There is no item in X list.”
数据最多的测试用例节点数在100这个数量级。
请注意输入输出格式。

样例输入 
Sample 1:
a c 3 b a d 6 , & j m 8 7 2 V -1

Sample 2:
z m v 1 a K 2 m p 9 a 0 a d -1
样例输出 
Sample 1:
The list A is: V a a b c d j m
The list B is: 2 3 6 7 8
The list C is: & ,

Sample 2:
The list A is: K a a a d m m p v z
The list B is: 0 1 2 9
There is no item in C list.
#include<stdio.h>
#include<string.h>
char a[110],b[110],c[110];
void fun(char a[],int n){
	for(int i=0;i<n;i++)
		for(int j=0;j<n-i-1;j++)
			if(a[j]>a[j+1]){
				char tmp=a[j];
				a[j]=a[j+1];
				a[j+1]=tmp;
			}
}
int main(){
	char ch[2];
	int n1=0,n2=0,n3=0;
	while(1){
		scanf("%s",ch);
		if(strcmp(ch,"-1")==0)break; 
		char p=ch[0];
		if(p>='0'&&p<='9')b[n2++]=p;
		else if(p>='A'&&p<='Z'||p>='a'&&p<='z')a[n1++]=p;
		else c[n3++]=p;
	}
	fun(a,n1);fun(b,n2);fun(c,n3);
	if(n1==0)printf("There is no item in A list.\n");
	else{
		printf("The list A is:");
		for(int i=0;i<n1;i++)printf(" %c",a[i]);
		printf("\n");
	}
	if(n2==0)printf("There is no item in B list.\n");
	else{
		printf("The list B is:");
		for(int i=0;i<n2;i++)printf(" %c",b[i]);
		printf("\n");
	}
	if(n3==0)printf("There is no item in C list.\n");
	else{
		printf("The list C is:");
		for(int i=0;i<n3;i++)printf(" %c",c[i]);
		printf("\n");
	}
	return 0;
} 

 

版权声明:本文为博主作者:qint_coding原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/qint__/article/details/137821671

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2024年4月22日
下一篇 2024年4月22日

相关推荐