1. 程式人生 > >問題 A: 左旋轉字串(棧和佇列)

問題 A: 左旋轉字串(棧和佇列)

題目:
定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾部。
如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。

有多組輸入,串的長度不超過100

輸入

輸入:

abcdef

輸出

輸出:

cdefab

樣例輸入 Copy

unbreakable

樣例輸出 Copy

breakableun

分析:

本題的話是一個簡單的佇列應用,我們可以用陣列模擬。從而得到正確的答案。

#include"stdio.h"
#include"string.h"
typedef struct {
 char data[1000];
 int front;
 int rear;
}SqQueue;
SqQueue Q;
void exchange()
{
    int i=1;
    while(i++<=2)
    {
        Q.rear++;
        Q.data[Q.rear]=Q.data[Q.front++];
    }
    //這一步極其重要因為是多組輸入,所以有可能造成上次的結果殘留。
    //所以必須要重新賦值一個結束標誌。
    Q.data[Q.rear+1]='\0';
}
int main()
{
    int i,n;
    while(~scanf("%s",Q.data))
    {
        Q.rear=strlen(Q.data)-1;
        Q.front=0;
        exchange(Q);
        printf("%s\n",&Q.data[Q.front]);
    }
}