12)按递增次序输出链表结点
#include "stdafx.h" #include<iostream> using namespace std; typedef struct node { int data; struct node *next; }Listnode,*LinkList; int _tmain(int argc, _TCHAR* argv[]) { return 0; } void reverse(LinkList &La) { while(La->next) { LinkList pre=La; LinkList r=pre;//r为辅助指针记录前驱 LinkList p=pre->next; while(p) { if(p->data<pre->next->data) pre=r;//找到当前最小值的前驱 r=p;p=p->next; } cout<<pre->next->data; LinkList u=pre->next; pre->next=u->next; free(u);//删除最小值结点 } free(La); }
13)删除带结点的单链表的重复元素
#include "stdafx.h" #include<iostream> using namespace std; typedef struct node { int data; struct node *next; }Listnode,*LinkList; int _tmain(int argc, _TCHAR* argv[]) { return 0; } void reverse(LinkList &La) { LinkList p=La->next;//工作指针; while(p) { LinkList q=p->next,r=p; while(q) { if(q->data==p->data) { LinkList u=q; r->next=u->next; free(u); q=r->next;//注意不要断链 } else { r=q;q=q->next; } } p=p->next; } }