2024年11月js链表逆序(逆序链接链表)

 更新时间:2024-11-15

  ⑴js链表逆序(逆序链接链表

  ⑵p=p;????????//?继续处理下一个结点?}??return?p;?}?void?main(){?NODE?*head;?head=creat();?print(head);?printf("

  ⑶");?print(revrese(head));??//?逆转函数返回一个头指针指向逆转的链表,详见注释:NODE?*revrese(NODE?*head){??//?由于你的链表是不带头结点的,所以要采用头指针的算法??NODE?*p,*p,*p;?p=head;?p?=?p?=?NULL;?while(p)?{??p=p-》next;??//?防止断链,让q临时指向p的后继??p-》next=p;??//?反复令前驱变后继,后继变前驱??p=p;????????//?使当前链表作为下次要改变为后继的链表,本文目录逆序链接链表编写一个带头结点的循环单链表逆序,要求输出逆序前后的序列将一个链表按逆序排列,即将链头当链尾,链尾当链头逆序链接链表intmain(intargc,char*argv){structTMyList{intData;TMyList*Next;};TMyList*p,*p,*p;TMyList*Head=newTMyList,*Head;Head-》Data=;Head-》Next=NULL;p=Head;for(inti=;i《;i++){TMyList*l=newTMyList;l-》Data=i;p-》Next=l;p=l;p-》Next=NULL;}p=Head;while(p!=NULL){printf("%d,",p-》Data);p=p-》Next;}p=Head;//表头指针//下面找到表尾的指针p=p-》Next;if(p==NULL)return;while(p-》Next!=NULL)p=p-》Next;Head=p;Head-》Next=NULL;while(p!=Head){p=Head;while(p-》Next!=p)p=p-》Next;p-》Next=p;p=p;}p-》Next=NULL;Head=Head;p=Head;printf("

  ⑷");while(p!=NULL){printf("%d,",p-》Data);p=p-》Next;}getch();return;}--上面是CPP下面是H--#include《iostream.h》typedefstructLNode{chardata;structLNode*next;}head;voidcreateL(LNode**h){LNode*p=newLNode;p-》next=NULL;*h=p;}intinsertL(LNode**h,inti,chare){LNode*p=*h;intj=;while(p&&j《i-){p=p-》next;++j;}if(!p||j》i-)return;LNode*s=newLNode;s-》data=e;s-》next=p-》next;p-》next=s;return;}voiddisplay(LNode*h){while(h-》next){cout《《h-》next-》data;h=h-》next;if(h-》next)cout《《"-》";}cout《《endl;}voidL_convert(LNode**h){LNode*s=*h;LNode*p=newLNode;LNode*p=newLNode;LNode*p=newLNode;p=s-》next;p=p-》next;p=p-》next;p-》next=NULL;while(p-》next){p-》next=p;p=p;p=p;p=p-》next;}p-》next=p;p-》next=p;s-》next=p;*h=s;}intmain(){chare;intn;LNode*head=NULL;createL(&head);cout《《"要插入多少个节点?";cin》》n;cout《《"输入要插入的数

  ⑸";for(inti=;i《=n;i++){cin》》e;insertL(&head,i,e);}cout《《"你要建立的链表是

  ⑹";display(head);cout《《"你要逆序表示的链表是

  ⑺";L_convert(&head);display(head);return;}编写一个带头结点的循环单链表逆序,要求输出逆序前后的序列用微软的VISUALSTUDIO运行成功,输出如下#include"stdafx.h"typedefstructnode{intdata;structnode*next;}*link,*Node;voidshow(constlink*linkToShow){Nodecurrent=(*linkToShow)-》next;???if(current==(*linkToShow)){printf("empty!

  ⑻");return;}printf("showdata!

  ⑼");do{printf("datais%d!

  ⑽",current-》data);current=current-》next;}while(current!=*linkToShow);printf("showdata!finished!

  ⑾");printf("

  ⑿");}voidreserve(link*linkToReserve){Nodecurrent=(*linkToReserve);Nodenext=(current)-》next;Nodenext=(next)-》next;do{(next)-》next=current;current=next;next=next;next=(next)-》next;}while(current!=(*linkToReserve));}intmain(){linklink=newnode;Nodenode=newnode;Nodenode=newnode;Nodenode=newnode;Nodenode=newnode;Nodenode=newnode;Nodenode=newnode;???link-》data=;link-》next=node;node-》data=;node-》next=node;node-》data=;node-》next=node;node-》data=;node-》next=node;node-》data=;node-》next=node;node-》data=;node-》next=node;node-》data=;node-》next=link;show(&link);reserve(&link);show(&link);while(true){}return;}将一个链表按逆序排列,即将链头当链尾,链尾当链头修改了两个地方,}。

  ⒀intmain(intargc,char*argv){structTMyList{intData;TMyList*Next;};TMyList*p,*p,*p;TMyList*Head=newTMyList,*Head;Head-》Data=;Head-》Next=NULL;p=Head;for(inti=;i《;i++){TMyList*l=newTMyList;l-》Data=i;p-》Next=l;p=l;p-》Next=NULL;}p=Head;while(p!=NULL){printf("%d,",p-》Data);p=p-》Next;}p=Head;//表头指针//下面找到表尾的指针p=p-》Next;if(p==NULL)return;while(p-》Next!=NULL)p=p-》Next;Head=p;Head-》Next=NULL;while(p!=Head){p=Head;while(p-》Next!=p)p=p-》Next;p-》Next=p;p=p;}p-》Next=NULL;Head=Head;p=Head;printf("

  ⒁");while(p!=NULL){printf("%d,",p-》Data);p=p-》Next;}getch();return;}--上面是CPP下面是H--#include《iostream.h》typedefstructLNode{chardata;structLNode*next;}head;voidcreateL(LNode**h){LNode*p=newLNode;p-》next=NULL;*h=p;}intinsertL(LNode**h,inti,chare){LNode*p=*h;intj=;while(p&&j《i-){p=p-》next;++j;}if(!p||j》i-)return;LNode*s=newLNode;s-》data=e;s-》next=p-》next;p-》next=s;return;}voiddisplay(LNode*h){while(h-》next){cout《《h-》next-》data;h=h-》next;if(h-》next)cout《《"-》";}cout《《endl;}voidL_convert(LNode**h){LNode*s=*h;LNode*p=newLNode;LNode*p=newLNode;LNode*p=newLNode;p=s-》next;p=p-》next;p=p-》next;p-》next=NULL;while(p-》next){p-》next=p;p=p;p=p;p=p-》next;}p-》next=p;p-》next=p;s-》next=p;*h=s;}intmain(){chare;intn;LNode*head=NULL;createL(&head);cout《《"要插入多少个节点?";cin》》n;cout《《"输入要插入的数

  ⒂";for(inti=;i《=n;i++){cin》》e;insertL(&head,i,e);}cout《《"你要建立的链表是

  ⒃";display(head);cout《《"你要逆序表示的链表是

  ⒄";L_convert(&head);display(head);return;}

  ⒅编写一个带头结点的循环单链表逆序,要求输出逆序前后的序列

  ⒆用微软的VISUALSTUDIO运行成功,输出如下

  ⒇#include"stdafx.h"typedefstructnode{intdata;structnode*next;}*link,*Node;voidshow(constlink*linkToShow){Nodecurrent=(*linkToShow)-》next;???if(current==(*linkToShow)){printf("empty!

  ⒈");return;}printf("showdata!

  ⒉");do{printf("datais%d!

  ⒊",current-》data);current=current-》next;}while(current!=*linkToShow);printf("showdata!finished!

  ⒋");printf("

  ⒌");}voidreserve(link*linkToReserve){Nodecurrent=(*linkToReserve);Nodenext=(current)-》next;Nodenext=(next)-》next;do{(next)-》next=current;current=next;next=next;next=(next)-》next;}while(current!=(*linkToReserve));}intmain(){linklink=newnode;Nodenode=newnode;Nodenode=newnode;Nodenode=newnode;Nodenode=newnode;Nodenode=newnode;Nodenode=newnode;???link-》data=;link-》next=node;node-》data=;node-》next=node;node-》data=;node-》next=node;node-》data=;node-》next=node;node-》data=;node-》next=node;node-》data=;node-》next=node;node-》data=;node-》next=link;show(&link);reserve(&link);show(&link);while(true){}return;}

  ⒍将一个链表按逆序排列,即将链头当链尾,链尾当链头

  ⒎修改了两个地方,详见注释:

  ⒏NODE?*revrese(NODE?*head){??//?由于你的链表是不带头结点的,所以要采用头指针的算法??NODE?*p,*p,*p;?p=head;?p?=?p?=?NULL;?while(p)?{??p=p-》next;??//?防止断链,让q临时指向p的后继??p-》next=p;??//?反复令前驱变后继,后继变前驱??p=p;????????//?使当前链表作为下次要改变为后继的链表。??p=p;????????//?继续处理下一个结点?}??return?p;?}?void?main(){?NODE?*head;?head=creat();?print(head);?printf("

  ⒐");?print(revrese(head));??//?逆转函数返回一个头指针指向逆转的链表。}

您可能感兴趣的文章:

相关文章