N = int(input(""))
L = []
for i in range(N):
inpi = int(input(""))
L.append(inpi)
for i in L:
str1 = str(i)
L1 = []
L2 = []
for i in range(0, len(str1), 2):
L1.insert(0, str1[i])
for i in range(1, len(str1), 2):
L2.append(str1[i])
print(str(L1).replace('[','').replace(']','').replace('\'','').replace(',',''))
print(str(L2).replace('[','').replace(']','').replace('\'','').replace(',',''))
供参考:
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {// 链表节点结构
char data;
struct Node* next;
}LinkNode, * LinkList;
void destroyNodes(LinkList L)
{
LinkNode *pL = NULL;
while(L){
pL = L;
L = pL->next;
free(pL);
}
}
void show(LinkList L)//输出单链表
{
if (L == NULL || L->next == NULL) return;
LinkNode* p = L->next;
while (p) {
printf(p == L->next ? "%c":" %c", p->data);
p = p->next;
}
printf("\n");
}
void Split(LinkList* L1, LinkList* L2)//链表拆分
{
(*L2) = (LinkNode*)malloc(sizeof(LinkNode));
(*L2)->next = NULL;
LinkNode *pL1,*prL1,*pL;
pL1 = (*L1)->next;
prL1 = (*L1);
int count = 0;
while(pL1 != NULL){
count++;
pL = pL1;
pL1 = pL1->next;
pL->next = NULL;
if(count%2==0){
prL1->next = pL; //偶数位置元素尾插
prL1 = pL;
}else{
pL->next = (*L2)->next;//奇数位置元素头插
(*L2)->next = pL;
}
}
}
void createListFromHead(LinkList* L)// 创建链表
{
char ch;
(*L) = (LinkNode*)malloc(sizeof(LinkNode));
(*L)->data = -1;
(*L)->next = NULL;
LinkNode* pL = (*L);
while (scanf("%c", &ch) == 1 && ch != '\n')// 生成链表
{
LinkNode* p = (LinkNode*)malloc(sizeof(LinkNode));
p->next = NULL;
p->data = ch;
pL->next = p;
pL = p;
}
}
int main()
{
int m;
scanf("%d", &m);
getchar();
while (m--)
{
LinkList L = NULL,L1 = NULL;
createListFromHead(&L);//创建链表 L
//show(L);
Split(&L, &L1);//拆分链表,按奇偶位置
show(L1);
show(L);
destroyNodes(L); //释放链表
destroyNodes(L1);
}
return 0;
}