用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
baizhiwen_2005的公告
<script type="text/javascript"><!-- google_ad_client = "pub-9539652807000774"; google_alternate_color = "99C9FF"; google_ad_width = 120; google_ad_height = 240; google_ad_format = "120x240_as"; google_ad_type = "text"; google_ad_channel = ""; google_color_border = "000000"; google_color_bg = "F0F0F0"; google_color_link = "0000FF"; google_color_text = "000000"; google_color_url = "008000"; google_ui_features = "rc:10"; //--> </script> <br> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
文章分类
Computer技术和发展
好友链接
blogspot-李平
csdn--刘涛
HDC
HDC的官方网站
hexun-emilia
jelly-wang
sina--小牛
sina-老段
sohu--中宝
sohu--刘涛
sohu-小鱼
小伙网站不错
数据结构和算法
精彩English
存档

原创  经典笔试题目 收藏

char *strcpy(char *des, const char *src){
       assert( (des != NULL) && (src != NULL) );
       char *add = des;
       while ( (*des++ = *src++) != '\0' ) ;
       return des;
}
###########################################################################
void *memcpy(void *pvTo, const void *pvFrom, size_t size)
{
  assert(  (pvTo != NULL) && (pvFrom != NULL)  );
 byte *pbTo = (byte *) pvTo; /
 byte *pbFrom = (byte *) pvFrom;
 while(size-- > 0 ){
    *pbTo ++ = *pbFrom ++ ;
 }
        return pvTo;
}
###########################################################################
void* memmove(void* dest, void* source, size_t count) {
       void* ret = dest;
       if (dest <= source || dest >= (source + count))
       {
          //Non-Overlapping Buffers
          //copy from lower addresses to higher addresses
         while (count --)
               *dest++ = *source++;
       }
      else
       {
        //Overlapping Buffers
       //copy from higher addresses to lower addresses
       dest += count - 1;
       source += count - 1;
       while (count--)
              *dest-- = *source--;
       }
      return ret;
}
###########################################################################
int my_atoi(const char *str) {
 //atoi()会扫描参数nptr字符串,跳过前面的空格字符
 //直到遇上数字或正负符号才开始做转换,而再遇到非
 //数字或字符串结束时('')才结束转换,并将结果返回
 long int v=0;
 int sign = 0;
 while ( *str == ' ')  str++;
 if(*str == '-'||*str == '+') 
  sign = *str++; 
 while (isdigit(*str))  
 { 
  v = v*10 + *str - '0';   
  str++;  
 } 
 return sign == '-' ? -v:v; 
}
###########################################################################
char* myitoa(int value,char* str,int radix) {  
      static   char   szMap[]   =   {  
  '0',   '1',   '2',   '3',   '4',   '5',  
  '6',   '7',   '8',   '9',   'a',   'b',  
  'c',   'd',   'e',   'f',   'g',   'h',  
  'i',   'j',   'k',   'l',   'm',   'n',  
  'o',   'p',   'q',   'r',   's',   't',  
  'u',   'v',   'w',   'x',   'y',   'z'  
 }; // 字符映射表  
 int   nCount = -1, nIndex;  
 char  *pStr = str, nTemp;  
 if   ( radix >= 2 && radix <= 36 )  
 {   // 限制radix必须在2到36之间  
  if   ( value < 0 && radix == 10 )  
  {   // 如果是负数就在首位添加负号,并将字符串前移  
   *pStr++ = '-';  
   value = -value;   //转为正数,  
  }  
  unsigned   int   nValue   =   *(unsigned*)&value;  
  do   { // 循环转换每一个数字,直到结束  
   pStr[++nCount] = szMap[nValue%radix];  
   nValue   /=   radix;  
  }   while(nValue >0);   //   转换结束后字符串是翻的  
  nIndex = ( nCount+1)   /   2;   //   计算出一半的长度  
  while(nIndex-- > 0)   {   //   将字符串的字符序翻转  
   nTemp = pStr[nIndex];  
   pStr[nIndex ] = pStr[nCount-nIndex];  
   pStr[nCount-nIndex] = nTemp;  
  }  
 }  
 pStr[nCount+1]='\0';   //   置结束符  
 return str;  

######################如何实现单链表逆置##############################
定义一个节点结构:
struct node
{
int date;//可能使用其它类型或结构
node *next;
};

假设你的链表已经存在,为L
node *curnode = L;//当前节点,指向开始
node *temp=curnode->next;//临时节点
curnode->next=NULL;
L=curnode;
//先将指针指向队尾
while(temp != NULL)
{
curnode=temp;
temp =curnode->next;
curnode->next=L;
L=curnode;

1.先序遍历非递归算法
#define maxsize 100
typedef struct
{
    Bitree Elem[maxsize];
    int top;
}SqStack;

void PreOrderUnrec(Bitree t)
{
    SqStack s;
    StackInit(s);
    p=t;
   
    while (p!=null || !StackEmpty(s))
    {
        while (p!=null)             //遍历左子树
        {
            visite(p->data);
            push(s,p);
            p=p->lchild;      
        }//endwhile
       
        if (!StackEmpty(s))         //通过下一次循环中的内嵌while实现右子树遍历
        {
            p=pop(s);
            p=p->rchild;       
        }//endif
               
    }//endwhile
   
}//PreOrderUnrec

2.中序遍历非递归算法
#define maxsize 100
typedef struct
{
    Bitree Elem[maxsize];
    int top;
}SqStack;

void InOrderUnrec(Bitree t)
{
    SqStack s;
    StackInit(s);
    p=t;
    while (p!=null || !StackEmpty(s))
    {
        while (p!=null)             //遍历左子树
        {
            push(s,p);
            p=p->lchild;
        }//endwhile
       
        if (!StackEmpty(s))
        {
            p=pop(s);
            visite(p->data);        //访问根结点
            p=p->rchild;            //通过下一次循环实现右子树遍历
        }//endif  
   
    }//endwhile

}//InOrderUnrec


3.后序遍历非递归算法
#define maxsize 100
typedef enum{L,R} tagtype;
typedef struct
{
    Bitree ptr;
    tagtype tag;
}stacknode;

typedef struct
{
    stacknode Elem[maxsize];
    int top;
}SqStack;

void PostOrderUnrec(Bitree t)
{
    SqStack s;
    stacknode x;
    StackInit(s);
    p=t;
   
    do
    {
        while (p!=null)        //遍历左子树
        {
            x.ptr = p;
            x.tag = L;         //标记为左子树
            push(s,x);
            p=p->lchild;
        }
   
        while (!StackEmpty(s) && s.Elem[s.top].tag==R) 
        {
            x = pop(s);
            p = x.ptr;
            visite(p->data);   //tag为R,表示右子树访问完毕,故访问根结点      
        }
       
        if (!StackEmpty(s))
        {
            s.Elem[s.top].tag =R;     //遍历右子树
            p=s.Elem[s.top].ptr->rchild;       
        }   
    }while (!StackEmpty(s));
}//PostOrderUnrec

#############################################################################################################################
软交换是实现传统程控交换机的“呼叫控制”功能的实体,但传统的“呼叫控制”功能是和业务结合在一起的,不同的业务所需要的呼叫控制功能不同,而软交换是与业务无关的,这要求软交换提供的呼叫控制功能是各种业务的基本呼叫控制

#############################################################################################################################
CDMA是码分多址的英文缩写(Code Division Multiple Access),它是在数字技术的分支--扩频通信技术上发展起来的一种崭新而成熟的无线通信技术。CDMA技术的原理是基于扩频技术,即将需传送的具有一定信号带宽信息数据,用一个带宽远大于信号带宽的高速伪随机码进行调制,使原数据信号的带宽被扩展,再经载波调制并发送出去。接收端使用完全相同的伪随机码,与接收的带宽信号作相关处理,把宽带信号换成原信息数据的窄带信号即解扩,以实现信息通信

#############################################################################################################################
SDMA是空分复用接入(Space Division Multiple Access)是一种卫星通信模式,它利用碟形天线的方向性来优化无线频域的使用并减少系统成本。这种技术是利用空间分割构成不同的信道。举例来说,在一颗卫星上使用多个天线,各个天线的波束射向地球表面的不同区域。地面上不同地区的地球站,它们在同一时间、即使使用相同的频率进行工作,它们之间也不会形成干扰。空分多址(SDMA)是一种信道增容的方式,可以实现频率的重复使用,充分利用频率资源。空分多址还可以和其它多址方式相互兼容,从而实现组合的多址技术,例如空分•码分多址

#############################################################################################################################
FDMA是数据通信中的一种技术,即不同的用户分配在时隙相同而频率不同的信道上。按照这种技术,把在频分多路传输系统中集中控制的频段根据要求分配给用户。同固定分配系统相比,频分多址使通道容量可根据要求动态地进行交换。

在FDMA系统中,分配给用户一个信道,即一对频谱,一个频谱用作前向信道即基站向移动台方向的信道,另一个则用作反向信道即移动台向基站方向的信道。这种通信系统的基站必须同时发射和接收多个不同频率的信号,任意两个移动用户之间进行通信都必须经过基站的中转,因而必须同时占用2个信道(2对频谱)才能实现双工通信。

以往的模拟通信系统一律采用FDMA。频分多址(FDMA)是采用调频的多址技术。业务信道在不同的频段分配给不同的用户。如TACS系统、AMPS系统等。频分多址是把通信系统的总频段划分成若干个等间隔的频道(也称信道)分配给不同的用户使用。这些频道互不交叠,其宽度应能传输一路数字话音信息,而在相邻频道之间无明显的串扰。


#############################################################################################################################
TDMA:Time Division Multiple Access 时分多址
时分多址是把时间分割成周期性的帧(Frame)每一个帧再分割成若干个时隙向基站发送信号,在满足定时和同步的条件下,基站可以分别在各时隙中接收到各移动终端的信号而不混扰。同时,基站发向多个移动终端的信号都按顺序安排在予定的时隙中传输,各移动终端只要在指定的时隙内接收,就能在合路的信号中把发给它的信号区分并接收下来。
  TDMA较之FDMA具有通信口号质量高,保密较好,系统容量较大等优点,但它必须有精确的定时和同步以保证移动终端和基站间正常通信,技术上比较复杂
#############################################################################################################################
FDMA、TDMA和CDMA的区别
频分多址(FDMA)是采用调频的多址技术。业务信道在不同的频段分配给不同的用户。如TACS系统、AMPS系统等。
时分多址(TDMA)是采用时分的多址技术。业务信道在不同的时间分配给不同的用户。如GSM、DAMPS等。
CDMA(码分多址)是采用扩频的码分多址技术。所有用户在同一时间、同一频段上,根据不同的编码获得业务信道。

目前的数字移动通信网的主要多址方式是FDMA、TDMA系统(GSM,DAMPS)。在频谱效率上约是模拟系统的3倍,容量有限;在话音质量上13kbit/s编码也很难达到有线电话水平、FTDMA系统的业务综合能力较高,能进行数据和话音的综合,但终端接入速率有限(最高9.6kbit/s TDMA系统无软切换功能,因而容易掉话,影响服务质量z;TDMA系统的国际漫游协议还有待进一步的完善和开发。因而TDMA并不是现代蜂窝移动通信的最佳无线接入,而CDMA码分多址技术完全适合现代移动通信网所要求的大容量、高质量、综合业务、软切换、国际漫游等
#############################################################################################################################
GSM全名为:Global System for Mobile Communications,中文为全球移动通讯系统
1.频谱效率。由于采用了高效调制器、信道编码、交织、均衡和语音编码技术,使系统具有高频谱效率。
2.容量。由于每个信道传输带宽增加,使同频复用栽干比要求降低至9dB,故GSM系统的同频复用模式可以缩小到4/12或3/9甚至更小(模拟系统为7/21);加上半速率话音编码的引入和自动话务分配以减少越区切换的次数,使GSM系统的容量效率(每兆赫每小区的信道数)比TACS系统高3~5倍。
3.话音质量。鉴于数字传输技术的特点以及GSM规范中有关空中接口和话音编码的定义,在门限值以上时,话音质量总是达到相同的水平而与无线传输质量无关。
4.开放的接口。GSM标准所提供的开放性接口,不仅限于空中接口,而且报刊网络直接以及网络中个设备实体之间,例如A接口和Abis接口。
5. 安全性。通过鉴权、加密和TMSI号码的使用,达到安全的目的。鉴权用来验证用户的入网权利。加密用于空中接口,由SIM卡和网络AUC的密钥决定。TMSI是一个由业务网络给用户指定的临时识别号,以防止有人跟踪而泄漏其地理位置。
6.与ISDN、PSTN等的互连。与其他网络的互连通常利用现有的接口,如ISUP或TUP等。
7.在SIM卡基础上实现漫游。漫游是移动通信的重要特征,它标志着用户可以从一个网络自动进入另一个网络。GSM系统可以提供全球漫游,当然也需要网络运营者之间的某些协议,例如计费

发表于 @ 2007年12月16日 23:31:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:C语言笔试大全 | 新一篇:内存相关的一些知识

  • 发表评论
  • 评论内容:
  •  
Copyright © baizhiwen_2005
Powered by CSDN Blog