千张笔记

Email:rain_qian830@163.com
posts - 28, comments - 42, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
题目:找到单向链表中间的那个元素,如果有两个则取前面一个。

答案:
#include <iostream>
using namespace std;

typedef 
struct node 
{
    
int value;
    node
* next;
}
Lnode,*Pnode;


int find_mid(Lnode* head)
{
    Lnode
* pre,*curr;
    curr 
= head;
    pre 
= head;
    
int i = 1;

    
for (;curr != NULL; curr = curr->next)
    
{
        
if (i%2 == 0)
        
{
            pre 
= pre->next;
        }

        i 
++;
    }

    
return pre->value;

}

//有头结点
int main()
{
    Lnode
* head = new Lnode;
    head
->next = NULL;
    
    Lnode
* nod = head;
    
int val;

    cout 
<< "输入数据(int类型,以0结束): ";
    cin 
>> val;

    
while (val != 0)
    
{
        Lnode
* curr = new node;
        
        curr
->value = val;
        curr
->next = NULL;
        
        nod
->next = curr;
        nod 
= nod->next;

        cin 
>> val;
    }


    cout 
<< "链表数据为:";
    
for (Lnode* pre = head->next;pre!=NULL;pre=pre->next)
    
{
        cout 
<< pre->value  <<" ";
    }

    cout 
<< endl;

    cout 
<< "中间的数是:" << find_mid(head) << endl;

    
return 0;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理