当前位置: 代码迷 >> C语言 >> 一个面试c程序
  详细解决方案

一个面试c程序

热度:308   发布时间:2008-05-30 15:11:45.0
提示: 作者被禁止或删除 内容自动屏蔽
2008-05-30 07:11:45
yxwsbobo

等 级:职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
  得分:0 
错了 好狠

还有评测啊``` 那再看看
----------------解决方案--------------------------------------------------------
- - 确实错了  不改了!!
----------------解决方案--------------------------------------------------------
程序代码:

node_t * ChangeTwoNodes(node_t *list)
{
    node_t *temp;
    if(list&&list->next)
    {
        temp=list->next;
        list->next=ChangeTwoNodes(temp->next);
        temp->next=list;
        return temp;
    }
    return list;
}


思路?算法 不复杂 `````   想搞的是 减少变量 缩短代码```  找最精简的代码`` 才是有意思的地方
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2008-05-30 08:20:44
中学者

等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
  得分:0 
我无聊....来个全的....
/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
typedef struct node{
   
int  data;
    node* next;
} node_m,*pnode_m;

pnode_m  creatlist(pnode_m list,int size)
{
   
printf("please input the value of node: \n");
    pnode_m tnode;
    int value;
    while(size>0)
    {
        
scanf("%d",&value);
        tnode = (pnode_m)malloc(sizeof(node_m));
        tnode->next = NULL;  tnode->data = value;
        if(list==NULL) list = tnode;
        else
        
{
            
tnode->next = list;
            list = tnode;
        }
        
--size;
    }
   
return list;
}
void freelist(pnode_m list)
{
   
pnode_m pnode = list;
    while(pnode!=NULL)
    {
        
list = pnode->next;
        free(pnode);
        pnode = list;
    }
}
pnode_m insertNode(pnode_m list,pnode_m node,const int cp)
{
   
pnode_m check = list,precheck=NULL;
    int i=1;
    for(;i<cp;++i) {precheck=check;check=check->next;}
   
if(precheck==NULL) {node->next=check;list=node;}
   
else
   
{
        
node->next = check;
        precheck->next = node;
    }
   
return list;
}
pnode_m deleteNode(pnode_m list,const int cp)
{
   
pnode_m check = list,precheck=NULL;
    int i=1;
    for(;i<cp;++i) { precheck=check;check=check->next;}
   
if(precheck==NULL) list=check->next;
    else  precheck->next = check->next;
    free(check);
    return list;
}
pnode_m exchangeNode(pnode_m list)
{
   
if(list==NULL) return NULL;
    else
   
{
        
pnode_m precheck=NULL,check=list,checksuc=list->next;
        for(;checksuc!=NULL; )
        {
            
check->next=checksuc->next;
            checksuc->next=check;
            if(precheck!=NULL) precheck->next=checksuc;
            else list=checksuc;
            precheck=check;
            check=check->next;
            checksuc=(check==NULL?NULL:check->next);
        }
        
return list;
    }
}
void printlist(pnode_m list)
{
   
while(list!=NULL)
    {
        
printf("%d->",list->data);
        list=list->next;
    }
   
putchar('\n');
}

----------------解决方案--------------------------------------------------------
我只能说,被飞燕的代码雷到了,而且彻彻底底地学习到了……
感谢飞燕…………
----------------解决方案--------------------------------------------------------
谁看见那个什么ioioc语言了。。我去打球回来就没有了。。。
----------------解决方案--------------------------------------------------------
貌似SW真正看明白我的代码了。。。呵呵

[color=white]
----------------解决方案--------------------------------------------------------
差距甚远......一样的思路,但我的那么繁杂....
----------------解决方案--------------------------------------------------------
  相关解决方案