青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎(chǔ)} {C++ 高級(jí)} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}

筆試題(轉(zhuǎn))


一、如何判斷一個(gè)單鏈表是有環(huán)的?(注意不能用標(biāo)志位,最多只能用兩個(gè)額外指針)
   struct node { char val; node* next;}
   bool check(const node* head) {} //return false : 無(wú)環(huán);true: 有環(huán)
    一種O(n)的辦法就是(搞兩個(gè)指針,一個(gè)每次遞增一步,一個(gè)每次遞增兩步,如果有環(huán)的話兩者必然重合,反之亦然):
    bool check(const node* head)
    {
         if(head==NULL) 
              return false;   
         node *low=head, *fast=head->next;
         while(fast!=NULL && fast->next!=NULL)
        {
               low=low->next;
               fast=fast->next->next;
               if(low==fast)
                    return true;
        }
       return false;
   }

 二、刪除一個(gè)單項(xiàng)鏈表的最中間的元素,要求時(shí)間盡可能短(不能使用兩次循環(huán))
struct link
{
    int data;
    struct link *next;
};
void delMiddle(link *head)
{
    if(head == NULL)
           return;
    else if(head->next == NULL)
    {
            delete head;
            return;
    }
    else
    {
            link *low = head;
            link *fast = head->next;
            while(fast != NULL && fast->next != NULL)
            {   
                       fast = fast->next->next;
                       if(fast == NULL)
                                    break;
                       low = low->next;
            }
            link *temp = low->next;
            low->next = low->next->next;
            delete temp;
  
    }
}
int main()
{
       struct link *head,*l;
       struct link *s;
       head = (link*)malloc(sizeof(link));
       head->data=0;
       head->next = NULL;
       l = head;
       for(int i=1; i<9; i++)
       {
            s = (link*)malloc(sizeof(link));
            s->data = i;
            s->next = NULL;
            l->next= s;
            l = l->next;
       }
       print(head);
       delMiddle(head);
       print(head);
       return 0;
}

三、輸入n,求一個(gè)n*n矩陣,規(guī)定矩陣沿45度線遞增(威盛)
/**
 * 得到如下樣式的二維數(shù)組
* zigzag(jpeg編碼里取象素?cái)?shù)據(jù)的排列順序)
*
*   0, 1, 5, 6,14,15,27,28,
*   2, 4, 7,13,16,26,29,42,
*   3, 8,12,17,25,30,41,43,
*   9,11,18,24,31,40,44,53,
*   10,19,23,32,39,45,52,54,
*   20,22,33,38,46,51,55,60,
*   21,34,37,47,50,56,59,61,
*   35,36,48,49,57,58,62,63
 */

void zigzag(int n)
{
 int **a =(int**) malloc(n*sizeof(int *));  //分配空間
 
 if(NULL == a)
  return ;
 int i;
 for(i = 0; i < n; i++) {
        if((a[i] =(int*) malloc(n * sizeof(int))) == NULL) {
            while(--i>=0)
                free(a[i]);
            free(a);
            return;
        }
    }
 
 bool flag = false; //這個(gè)標(biāo)志位用來(lái)判斷是從45度角生成還是225度角生成
 int count = 0;
 for(i=0; i<n; i++)  //生成的上半部分的數(shù)據(jù)
 {
  
  if(flag)
  {
   for(int r = 0; r<=i; r++)
   {
    a[r][i-r] = count;
    count++;
   }
   flag = false;
  }
  else
  {
   for(int r = i; r>=0; r--)
   {
    a[r][i-r] = count;
    count++;
   }
   flag = true;
  }
 }
 for(i=n-1; i>=0; i--)  //生成的是下半部分的數(shù)據(jù)
 {
 // cout<<i<<endl;
  if(flag)
  {
   for(int r = 0; r<=i-1; r++)
   {
    int r1 = n-i+r;       //代表當(dāng)前行
    int c1 = 2*n-i-1-r1;  //代表當(dāng)前列
    a[r1][c1] = count;
    count++;
   }
   flag = false;
  }
  else
  {
   for(int r = i-1; r>=0; r--)
   {
    cout<<"ddd"<<endl;
    int r1 = n-i+r;
    int c1 = 2*n-i-1-r1;
 //   cout<<r1<<","<<c1<<endl;
    a[r1][c1] = count;
    count++;
   }
   flag = true;
  }
 }
 for(int r = 0; r<n; r++)
 {
  for(int c=0; c<n; c++)
   cout<<a[r][c]<<",";
  cout<<endl;
 }
}
int main()
{
 int n;
 cin>>n;
 zigzag(n);
 return 0;
}
網(wǎng)上還有一個(gè)人寫(xiě)了一個(gè)比較巧的算法:
/**
* 得到如下樣式的二維數(shù)組
* zigzag(jpeg編碼里取象素?cái)?shù)據(jù)的排列順序)
*
*   0, 1, 5, 6,14,15,27,28,
*   2, 4, 7,13,16,26,29,42,
*   3, 8,12,17,25,30,41,43,
*   9,11,18,24,31,40,44,53,
*   10,19,23,32,39,45,52,54,
*   20,22,33,38,46,51,55,60,
*   21,34,37,47,50,56,59,61,
*   35,36,48,49,57,58,62,63
*/

#include
<stdio.h>
int main()
{
   
int N;
   
int s, i, j;
   
int squa;
    scanf(
"%d", &N);
   
/* 分配空間 */
   
int **a = malloc(N * sizeof(int *));
   
if(a == NULL)
       
return 0;
   
for(i = 0; i < N; i++) {
       
if((a[i] = malloc(N * sizeof(int))) == NULL) {
           
while(--i>=0)
                free(a[i]);
            free(a);
           
return 0;
        }
    }
   
/* 數(shù)組賦值 */
    squa
= N*N;   
   
for(i = 0; i < N; i++)
       
for(j = 0; j < N; j++) {
            s
= i + j;
           
if(s < N)
                a[i][j]
= s*(s+1)/2 + (((i+j)%2 == 0)? i : j);
           
else {
                s
= (N-1-i) + (N-1-j);
                a[i][j]
= squa - s*(s+1)/2 - (N - (((i+j)%2 == 0)? i : j));
            }
        }
   
/* 打印輸出 */   
   
for(i = 0; i < N; i++) {
       
for(j = 0; j < N; j++)
            printf(
"%-6d", a[i][j]);
        printf(
"\n");
    }
   
return 0;
}

四、打印1到1000的整數(shù),不能使用流程控制語(yǔ)句(for,while,goto等)也不能使用遞歸
1.
typedef struct _test{
   
static int a;
    _test(){
        printf(
"%d\n",_test::a);
        a
++;
    }
  }Test;
 
int Test::a = 1;

 
int   main()  
  {  
    Test tt[
1000];
   
return 0;
  }  
2.
#include   <stdio.h>
#define   B   P,P,P,P,P,P,P,P,P,P
#define   P   L,L,L,L,L,L,L,L,L,L
#define   L   I,I,I,I,I,I,I,I,I,I,N
#define   I   printf( "%3d   ",i++)
#define   N   printf( "\n ") 
int  main()
{
    int   i   =   1;
    B;
}

#define A(x) x;x;x;x;x;x;x;x;x;x;
int main ()
{
   
int n = 1;
    A(A(A(printf (
"%d ", n++))));

   
return 0;
}


五、struct   S   {
        int   i;
        int   *   p;
};
void   main()
{
        S   s;
        int   *   p   =   &s.i;
        p[0]   =   4;
        p[1]   =   3;
        s.p   =   p;
        s.p[1]   =   1;
        s.p[0]   =   2;
}
問(wèn)程序會(huì)在哪一行死掉。 (microsoft)
解: S   s;
         int   *   p   =   &s.i;        //s.i的地址存儲(chǔ)在p里
        p[0]   =   4;                    //修改了s.i
         p[1]   =   3;                    //修改了s.p
         s.p   =   p;                    //s.p指向s.i
         s.p[1]   =   1;               //修改s.p本身
        s.p[0]   =   2;               //s.p指向的是0x00000001,嘗試向這里寫(xiě),出錯(cuò)
     s.p[0]       =       2;   時(shí)出錯(cuò)
     因?yàn)閟.p存的是s.i的地址,s.p[1]為s.p,當(dāng)s.p[1]=1時(shí),s.p此時(shí)存放的是1了,而不是地址s.i,故在s.p[0]   =   2時(shí)出錯(cuò).
此時(shí)相當(dāng)于s.p=ox00000001;地址ox0000001   =   2;當(dāng)然就出錯(cuò)了

如果語(yǔ)句s.p[0]   =2   先于s.p[1]=1則程序就不會(huì)出錯(cuò).此時(shí)語(yǔ)句相當(dāng)于s.i=2;s.p=1;

六、題目描述:
1.   int   swap(int   *x,int   *y)
{
    if(x==NULL   ¦ ¦   y==NULL)
        return   -1;
    *x   +=   *y;
    *y   =   *x-   *y;
    *x   -=   *y;
      return   1;
}
請(qǐng)改錯(cuò),溢出已經(jīng)考慮,不是錯(cuò)誤
2.
void   foo(int   *x,   int   *y)
{
    *x   +=   *y;
    *x   +=   *y;
}
void   fun(int   *x,   int   *y)
{  
    *x   +=   2   *   (*y);
  }
問(wèn)兩個(gè)函數(shù)是否等價(jià),能否互換
解答:第一題的函數(shù)是交換。但假如考慮x,   y都是指向同一個(gè)變量,結(jié)果是這個(gè)變量的值為0.
第二題的兩個(gè)函數(shù)是有區(qū)別的,也考慮x,y是指向同一個(gè)變量.這樣第一個(gè)函數(shù)的結(jié)果是這個(gè)變量的4倍.但第二個(gè)函數(shù)的結(jié)果是變量的3倍
.

posted on 2008-02-18 13:25 夢(mèng)在天涯 閱讀(5085) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): interview

評(píng)論

# re: 筆試題(轉(zhuǎn)) 2008-03-09 16:44 DK_jims

不是吧~ 如果我做此筆試,,不用找工作了????????  回復(fù)  更多評(píng)論   

公告

EMail:itech001#126.com

導(dǎo)航

統(tǒng)計(jì)

  • 隨筆 - 461
  • 文章 - 4
  • 評(píng)論 - 746
  • 引用 - 0

常用鏈接

隨筆分類(lèi)

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1812163
  • 排名 - 5

最新評(píng)論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              午夜精品剧场| 亚洲乱码一区二区| 久久久午夜电影| 国产综合自拍| 亚洲国产精品va在看黑人| 蜜桃精品一区二区三区 | 久久免费视频网| 91久久亚洲| 亚洲美女网站| 国产日韩1区| 欧美成人69av| 欧美日韩亚洲系列| 久久国产黑丝| 免费成人在线观看视频| 亚洲国产精品www| 亚洲一区二区三区四区中文| 亚洲在线视频网站| 在线精品视频一区二区三四| 91久久亚洲| 国产精品午夜在线| 亚洲大胆美女视频| 国产精品美女久久久浪潮软件| 香港久久久电影| 久热这里只精品99re8久| 中文国产成人精品| 久久久久国产精品www| 一区二区三区不卡视频在线观看 | 亚洲第一黄网| 国产精品网站在线播放| 欧美成人中文字幕在线| 国产欧美一区二区精品性| 亚洲国产精品精华液网站| 国产欧美综合一区二区三区| 亚洲精品乱码久久久久久蜜桃91| 国产在线精品一区二区夜色| 亚洲伦理精品| 亚洲国产欧美一区二区三区同亚洲| 亚洲视频导航| 日韩一级精品视频在线观看| 久久精品欧美| 欧美在线一二三| 国产精品99一区| 最新成人在线| 揄拍成人国产精品视频| 午夜精品久久久久久久白皮肤| 一本大道久久精品懂色aⅴ| 久久久久国产一区二区三区| 欧美一区二区三区视频| 欧美日韩在线视频首页| 亚洲七七久久综合桃花剧情介绍| 精品动漫av| 欧美在线亚洲在线| 欧美专区在线观看一区| 国产精品久久久久久久久久妞妞| 亚洲精品一区二区三区四区高清 | 国产精品一卡| 亚洲少妇最新在线视频| 亚洲视频导航| 欧美私人啪啪vps| 亚洲精品日产精品乱码不卡| 亚洲区免费影片| 你懂的国产精品永久在线| 欧美大色视频| 亚洲欧洲精品一区二区精品久久久| 久久精品天堂| 欧美成人激情视频| 亚洲欧洲一区二区三区| 欧美二区在线播放| 91久久综合亚洲鲁鲁五月天| 夜夜嗨av一区二区三区四季av| 欧美精品福利在线| 在线亚洲免费| 久久精品成人欧美大片古装| 国产在线精品一区二区中文| 久久久777| 亚洲国产影院| 亚洲免费伊人电影在线观看av| 国产精品区二区三区日本| 伊人久久综合97精品| 久久久人成影片一区二区三区 | 噜噜噜91成人网| 亚洲第一精品在线| 日韩视频一区二区| 欧美日韩一区综合| 欧美一区二区三区视频在线观看| 久久亚洲视频| 亚洲精品国精品久久99热| 欧美久久久久中文字幕| 亚洲自拍偷拍一区| 免费不卡视频| 中文在线资源观看网站视频免费不卡| 欧美日韩三级电影在线| 欧美亚洲网站| 亚洲国产精品悠悠久久琪琪| 亚洲欧美日韩精品久久久久| 黄色成人av在线| 欧美视频一区二区| 久久婷婷久久一区二区三区| 99国产一区| 玖玖精品视频| 亚洲欧美综合国产精品一区| 有坂深雪在线一区| 国产精品免费一区豆花| 美女主播一区| 欧美亚洲免费| 亚洲精选视频在线| 免费成人在线观看视频| 欧美在线观看www| 亚洲美女区一区| 黄色成人在线网址| 欧美丝袜第一区| 免费亚洲电影在线| 欧美亚洲一区| 一区二区精品国产| 亚洲国产你懂的| 久久亚洲欧美| 久久精品99国产精品| 亚洲一二三区在线| 亚洲人妖在线| 在线观看亚洲| 国产一区日韩二区欧美三区| 欧美午夜影院| 欧美日韩精品免费观看| 免费在线观看日韩欧美| 久久精品人人| 欧美一区二视频| 亚洲自拍三区| 亚洲性色视频| 亚洲一区二区在线免费观看视频| 亚洲三级影院| 亚洲人成网站色ww在线| 亚洲二区三区四区| 欧美国产在线视频| 免播放器亚洲| 久久综合伊人77777| 久久久久久久尹人综合网亚洲| 亚洲欧美日韩成人高清在线一区| 一本色道久久88精品综合| 亚洲美女免费精品视频在线观看| 91久久极品少妇xxxxⅹ软件| **网站欧美大片在线观看| 在线欧美亚洲| 亚洲国产精品久久精品怡红院| 伊大人香蕉综合8在线视| 尤物九九久久国产精品的分类| 国语自产偷拍精品视频偷| 国产一区视频观看| 欧美在线一二三| 欧美在线视频观看免费网站| 欧美在线视频不卡| 久久精品一本| 女人天堂亚洲aⅴ在线观看| 猛男gaygay欧美视频| 欧美电影打屁股sp| 91久久极品少妇xxxxⅹ软件| 日韩午夜黄色| 亚洲欧美另类久久久精品2019| 亚洲欧美日韩精品综合在线观看| 欧美影院精品一区| 欧美 日韩 国产一区二区在线视频 | 欧美福利视频在线| 亚洲精品美女| 性欧美8khd高清极品| 久久婷婷国产综合国色天香| 欧美激情久久久久久| 欧美亚韩一区| 一区二区三区在线视频播放| 亚洲国产精品热久久| 亚洲调教视频在线观看| 久久国产毛片| 亚洲高清视频一区二区| 亚洲小视频在线观看| 久久久午夜电影| 欧美日韩综合视频网址| 精品不卡在线| 亚洲一区二区在线观看视频| 久久免费视频观看| 亚洲免费激情| 久久久久久精| 国产精品久久久一本精品| 亚洲第一精品影视| 亚洲欧美另类中文字幕| 欧美成人免费播放| 久久精品亚洲精品| 久久婷婷久久| 日韩亚洲视频| 久久免费的精品国产v∧| 国产精品v日韩精品v欧美精品网站| 国产最新精品精品你懂的| 亚洲无毛电影| 久久婷婷亚洲| 亚洲在线网站| 欧美日本三级| 亚洲国产另类久久精品| 久久国产直播| 一区二区三区视频在线播放| 欧美大片一区二区三区| 精品96久久久久久中文字幕无| 校园春色综合网| 日韩视频在线永久播放|