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>){
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=;
stack<Node*> ss;
int i;
Node *la=NULL,*tail=NULL,*lb=head;
while(lb!=NULL){
i=;
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 ;
}
上一篇:HIDL学习笔记


下一篇:windows 下面的内存泄漏排查.