【算法设计-单链表的逆转】单链表逆转实现
来源:互联网 发布:php require once地址 编辑:程序博客网 时间:2024/06/01 07:53
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);
}
- 【算法设计-单链表的逆转】单链表逆转实现
- 单链表的逆转实现
- 单链表逆转的优化算法
- C++实现单链表的逆转
- 【算法】Java单链表逆转
- 单链表,实现逆转
- 单链表实现就地逆转
- java实现单链表逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的就地逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 机房重构——总结篇
- 杭电ACM——1088
- js中在子窗口中关闭父窗口问题
- FDU--- (bfs+dfs 未完待补充)
- 提高第18课时,实践1,数组大作战
- 【算法设计-单链表的逆转】单链表逆转实现
- java基础:集合框架之List(共性方法)
- open output file xxx.exe: Permission denied
- 抽象类与接口的定义与区别
- 《C++编程》第3章第29题
- Count and Say
- “虐心”的获取C++函数列表
- particlefilter-person
- 谷歌那让人“呵呵”的图像技术