要求利用数据结构中的串来解决

给定一个长度为偶数位的0,1字符串,请编程实现串的奇偶位互换。
输入
输入包含多组测试数据。
输入的第一行是一个整数C,表示有C测试数据。
接下来是C组测试数据,每组数据输入均为0,1字符串,保证串长为偶数位(串长<=50)。
输出
请为每组测试数据输出奇偶位互换后的结果,每组输出占一行。
样例输入 Copy
2
0110
1100
样例输出 Copy
1001
1100


#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define MAX_STRING_SIZE (50)
typedef struct {
    char ch[MAX_STRING_SIZE];
    int length;
}String;

typedef struct slist
{
    String str;
    struct slist * next;
}str_list;

int main()
{
    int c = 0;
    str_list * head = NULL; 
    str_list * end = NULL; 
    str_list * new = NULL;
    scanf("%d", &c);
    
    for(int i = 0; i < c; i++)
    {
        new = (str_list *)malloc(sizeof(str_list));
        memset(new, 0, sizeof(str_list));
        scanf("%s", new->str.ch);
        new->str.length = strlen(new->str.ch);
        if(end != NULL)
        {
            end->next = new;
            end = new;
        }else{
            end = new;
            head = end;
        }
    }
    str_list * mov = head;
    while(mov != NULL)
    {
        for(int i = 0; i < mov->str.length; i++)
        {
            printf("%c", mov->str.ch[i] == '1'?'0':'1');
        }
        printf("\n");
        mov = mov->next;
    }
    return 0;
}

串指的是字符串?

img

#include <stdio.h>
#include <string.h>
#define max 51
void swap(char t[],int n) 
{
    for(int i=0;i<n;i++)
    {
        if(i%2==0)
        {
            char tem=t[i];
            t[i]=t[i+1];
            t[i+1]=tem;
            i++;
        }
    }
}

int main()
{
    char t[max];
    int c;
    scanf("%d",&c);
    fflush(stdin);
    while(c--)
    {
        gets(t);
        swap(t,strlen(t));
        puts(t);
    }
    return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
    char s[51] = {0};
    int C,i,j,len=0;
    char t;
    scanf("%d",&C);
    for(i=0;i<C;i++)
    {
        scanf("%s",s);
        len = strlen(s);
        for(j=0;j<len;j+=2)
        {
            t = s[j];
            s[j] = s[j+1];
            s[j+1]=t;
        }
        printf("%s\n",s);
    }
    return 0;
}
#include <stdio.h>
#include <string.h>

int main(){
    int T;
    char s[51];
    int length;
    char temp;
    int i;
    
    scanf("%d",&T);
    
    while(T--){
        scanf("%s",s);
        length=strlen(s);
        
        for(i=0;i<length-1;i+=2){
            temp=s[i];
            s[i]=s[i+1];
            s[i+1]=temp;
        }
        
        printf("%s\n",s);
    }
            
    return 0;
}

#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>

using namespace std;
int T;
string str;
int main() {

    cin >> T;
    while (T--) {
        cin >> str;
        for (int i = 0; i < str.length(); i += 2)
            printf("%c%c", str[i + 1], str[i]);
    }
    return 0;
}


#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>

using namespace std;

int main()
{
    int c;
    cin >> c;
    while(c--)
    {
        string s;
        cin >> s;
        
        //双指针算法
        for (int i = 0,j = i + 1;j < (int)s.size();i+=2,j+=2)
        {
            //交换字符操作
            char temp;
            temp = s[i];
            s[i] = s[j];
            s[j] = temp;
        }
        
        for (int k = 0;k < (int)s.size();k++) cout << s[k];
        cout << endl;
    }
    return 0;
}

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,tot1,tot2;
string s; 
char a[55],b[55];
signed main(){
//    freopen(".in","r",stdin);
//    freopen(".out","w",stdout);
    scanf("%lld",&n);
    while(n-->0){
        cin>>s;
        tot1=0,tot2=0;
        for(register int i=0;i<s.size();++i){
            if((i+1)%2==0){
                b[++tot2]=s[i];
            }
            else{
                a[++tot1]=s[i];
            }
        }
        if(tot1>tot2)cout<<a[tot1--];
        for(register int i=1;i<=tot1;++i){
            cout<<a[i]<<b[i];
        }
        puts("");
    }
}

img

过样例了

博主参考下面链接看看
https://b23.tv/auFUQYD