您的位置:首页 > 其它

【算法设计-单链表的逆转】单链表逆转实现

2015-05-07 20:32 549 查看
1.在Θ(n)时间内将链表转置,而且只能需要少量的额外空间



这里需要用3个指针使得q指向p然后依次后移。

代码:

#include<iostream>

using namespace std;

typedef struct Node

{

int data;

struct Node *next;

}LinkList;

LinkList* Create_End();

void printLinkList(LinkList *L);

LinkList* Create_End()

{

LinkList *head, *e, *p;

head=new LinkList;

int key;

e = head;

printf("请输入您要插入的数据,#结束!\n");

while (scanf("%d",&key)==1)

{

p = new LinkList;

p->data = key;

e->next = p;

e = p;

}

e->next = NULL;

return head;

}

void printLinkList(LinkList *L)

{

LinkList *p = L->next;

while (p->next != NULL)

{

printf("%d->", p->data);

p = p->next;

}

printf("%d", p->data);

printf("\n");

}

LinkList* reverse(LinkList *L)

{

LinkList* p,*q,*r;

p=L->next;

q=p->next;

r=q->next;

p->next=NULL;

while(r->next!=NULL)

{

q->next=p;

p=q;

q=r;

r=r->next;

}

q->next=p;

r->next=q;

L->next=r;

return L;

}

int main(void)

{

LinkList *Linklist1=new LinkList;

Linklist1=Create_End();

printLinkList(Linklist1);

printf("转换后的链表为:");

Linklist1=reverse(Linklist1);

printLinkList(Linklist1);

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐