单链表的逆置

来源:互联网 发布:网络电视腾讯视频 编辑:程序博客网 时间:2024/04/29 17:57
typedef struct LNode{ElemType data;struct LNode *next;}LNode,*LinkList//逆向建立单链表void CreateList(LinkList &L,int n){L=(LinkList)malloc(sizeof(LNode));L->next=NULL;for(i=n;i>0;--i){p=(LinkList)malloc(sizeof(LNode));scanf(&p->data);p->next=L->next;L-next=p;}}//带头结点的单链表的逆置运算void reverse(pointer h){pointer p,q;p=h->next;h->next=NULL;while(p!=NULL){q=p;p=p->next;  //依次链接q->next=h->next;  //将q所指结点链接到新链表中h->next=q;  //头结点指向新链接的结点,也就会第一个结点}}//不带头结点的单链表的逆置运算void reverse(LinkList &L){p=null;q=L;while(q!=null){L=L->next;  //暂存下一个结点否则执行下一步时,就被覆盖了找不到了q->next=p; //q是带操作结点,p是上一个结点p=q;  //将本结点设置为上一个结点q=L;  //将暂存的结点设为待操作的结点}L=p; //将第一个结点设置为L}

0 0