王道P37T12
主代码:
void delete_common(LinkList& L){ LNode* pre=L,*p=L->next; while(p!=NULL){ LNode* r=p->next; while(r!=NULL && p->data==r->data){ pre->next=r; LNode* del=p; p=r; delete del; r=r->next; } pre=p; p=p->next; } }
完整代码:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#include <cstdio> #include <stdlib.h> using namespace std; typedef struct LNode{ int data; struct LNode* next=NULL; LNode(){ } LNode(int x){ data=x; } }LNode; typedef LNode* LinkList; LinkList build_list(int * arr,int n){ int i; LinkList L=new LNode; LinkList pre=L; for(i=0;i<n;i++){ LinkList p=new LNode(arr[i]); pre->next=p; pre=p; } return L; } void show_list(LinkList& L){ LinkList p=L->next; while(p){ printf("%d ",p->data); p=p->next; } puts(""); } void delete_common(LinkList& L){ LNode* pre=L,*p=L->next; while(p!=NULL){ LNode* r=p->next; while(r!=NULL && p->data==r->data){ pre->next=r; LNode* del=p; p=r; delete del; r=r->next; } pre=p; p=p->next; } } int main(){ int arr[10]={0,0,0,0,0,0,0,0,0,0}; LinkList L=build_list(arr,10); show_list(L); delete_common(L); show_list(L); }