歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

2012年華為校園招聘機試(南京)

1:給定一個整數(有可能是負數),將整數變成字符串。函數已經聲明好類似void change(int number, char s[])的形式。可以自己寫用例測試

解:基礎題目

解法一

void change(int number, char s[])
{
 itoa(number,s,10);
}

解法二

void change(int number, char s[])
{
 //以十進制轉換
    int tmp=number,index=0,count=0;//用來計算number的位數
 while(tmp!=0)
    tmp=tmp/10,++count;//注意此處用了逗號表達式
 number>0?true:(s[0]='-',++index);
 s[count+index]='\0';
 for(;count;s[index+(--count)]=abs(number)%10+48,number/=10);//要加48:)
}

2:給定一個已經定義好的單鏈表,將單鏈表中的數字逆序。輸入為head指針,返回的也是一個head指針。函數聲明為void sor(Node **head)的形式。
 
解,鏈接的逆轉算法

void sor(Node **head)
 {
    Node *p=*head,*q,*s;
    if(!p||!p->next)//head=NULL,或者只有一個元素返回
        return ;
    q=NULL;
    s=p->next;
    while(s)
    {
        p->next=q;
        q=p;
        p=s;
        s=s->next;
    }
  p->next=q;
    *head=p;
 }

3:有一個數組a[N]如a[10]={0,1,2,3,4,5,6,7,8,9}每隔兩個數刪除一個數,如0,1,2(刪除),3,4,5(刪除),6,7,8(刪除),9,到數組尾部回到數組頭部繼續刪除,要求編寫一個函數實現實現上述操作,返回最後一個數的數組下標。函數接口:int getLast(int iLen),參數:數組初始元素個數iLen

解:基本算法

int getLast(int iLen)
 {
    int *data=new int[iLen];
    for(int i=0;i<iLen;i++)
        cin>>data[i];
    int cnt=iLen,index=0,flag=1,last;
    while(cnt>1)
    {
        ++index;
        if(data[index%iLen]!=-1)
        {
    ++flag;
  }
        if(flag==3)
        {
            data[index%iLen]=-1;
            flag=0;
            --cnt;//將數組無數減1
        }
    }
    for(int j=0;j<iLen;j++)//這種方法效率不高,要再一次循環,求坐標
        if(data[j]!=-1)
            last=j;
    return last;
 }

Copyright © Linux教程網 All Rights Reserved