删除数组中一样的元素

来源:互联网 发布:c语言二叉查找树 编辑:程序博客网 时间:2024/05/01 11:19
#include<iostream>using namespace std;class ARR {private:int size;int buff[100];public:ARR(int a[],int length);void show();void delsame();};ARR::ARR(int a[],int length){int i;size=length;for(i=0;i<size;i++){buff[i]=a[i];};}void ARR::show(){int i;for(i=0;i<size;i++)cout<<buff[i];cout<<endl;}void ARR::delsame(){int i,j;for(i=0;i<size;i++){if(buff[i-1]==buff[i]){for(j=i;j<size;j++)buff[j]=buff[j+1];size--;i--;};};}int main(){int arr[16]={1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10};ARR x(arr,16);x.show();x.delsame();x.show();return 0;}
自己动手总是错误百出
用链表动态储存数据:
#include<iostream>using namespace std;struct node             //节点的声明{int data;node *next;};class ARR               //类的声明{private:node * head;int size;public:ARR();void creat();void show();void delsame();};ARR::ARR()               //构造函数{head=new node;size=0;}void ARR::creat()        //创建链表储存数字串{node *p1,*p2;int mark,item;int n=1;cout<<"请输入链表结束标志(仅数字):"<<endl;cin>>mark;cout<<"请输入第一个数字:"<<endl;cin>>head->data;p1=head;p2=head;while(item!=mark){p1=new node;cout<<"请输入第"<<n<<"个数字"<<endl;cin>>item;if(item==mark)break;p1->data=item;p2->next=p1;p2=p1;n++;};size=n;p2->next=NULL;}void ARR::show()            //输出{node *p;p=head;while(p!=NULL){cout<<p->data<<endl;p=p->next;};cout<<"长度是"<<size<<endl;}void ARR::delsame(){int i;node *p1,*p2;p1=head;p2=head->next;for(i=0;i<size-1;i++){if(p1->data==p2->data){p2=p2->next;p1->next=p2;size--;i--;}else{p1=p1->next;p2=p2->next;}};}int main (){ARR  x;x.creat();x.show();x.delsame();x.show();return 0;}



原创粉丝点击