单链表的逆转】单链表逆转实现

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);}

没有什么可凭仗,只有他的好身体,没有地方可去,

单链表的逆转】单链表逆转实现

相关文章:

你感兴趣的文章:

标签云: