首页 > 代码库 > 9月10日,美团网2014校招研发笔试哈尔滨站 1、链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现
9月10日,美团网2014校招研发笔试哈尔滨站 1、链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现
// reverselink.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"struct Node{ int num; struct Node*next;};typedef struct Node Node;Node * createLink(){ Node *head=NULL,*urn,*tail; int data; cin>>data; while(data>0){ urn=(Node*)malloc(sizeof(Node)); urn->num=data; if(head==NULL) tail=head=urn; else{ tail->next=urn; tail=tail->next; } cin>>data; } if(head!=NULL) tail->next=NULL; return head;}void printNode(Node*head){ Node *p=head; while(p!=NULL){ cout<<p->num<<" "; p=p->next; } return;}int _tmain(int argc, _TCHAR* argv[]){ cout<<"Enter the numbers:"<<endl; Node *head=createLink(); int k=2; stack<Node*> ss; int i; Node *la=NULL,*tail=NULL,*lb=head; while(lb!=NULL){ i=0; Node *top; top=lb; while(lb!=NULL&&i<k){ ss.push(lb); lb=lb->next; i++; } if(i==k){ while(!ss.empty()){ if(la==NULL) la=tail=ss.top(); else{ tail->next=ss.top(); tail=tail->next; } ss.pop(); } if(lb==NULL) tail->next=NULL; } else{ tail->next=top; } } head=la; printNode(head); getchar(); getchar(); return 0;}
9月10日,美团网2014校招研发笔试哈尔滨站 1、链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。