自己写的模板才是最好的模板
链表
sort只需要变顺序啊
new Linknode(val)才给他开了个空间,不然白给
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
class List;
class LinkNode
{
friend class List;
private:
int data;
LinkNode *link;
public:
LinkNode(const int & item, LinkNode *ptr = NULL)
{
data=item;
link=ptr;
}
LinkNode (LinkNode *ptr = NULL)
{
link=ptr;
}
~LinkNode() { };
};
class List
{
private:
LinkNode *first;
public:
List ()
{
first = new LinkNode ();
}
~List ()
{
MakeEmpty(); //析构函数
}
void MakeEmpty ( ); //链表置空
int Remove ( int i ); //需要补充的成员函数
void input();
void output(); //需要补充的成员函数
void Sort();
void Insert(int val);
};
void List:: MakeEmpty ( )
{
LinkNode *q;
while (first->link != NULL )
{
q = first->link;
first->link = q->link;
delete q;
}
}
void List:: input( )
{
int n,val;
LinkNode *newnode;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>val;
newnode=new LinkNode(val);
newnode->data=val;
newnode->link=first->link;
first->link=newnode;
}
}
void List::Sort()
{
LinkNode *i=first->link,*j;
while (i!= NULL )
{
j=i->link;
while(j!=NULL)
{
if(i->data>j->data)
{
int temp;
temp=j->data;
j->data=i->data;
i->data=temp;
}
j=j->link;
}
i=i->link;
}
}
void List::output()
{
LinkNode *q;
while (first->link != NULL )
{
q = first->link;
first->link = q->link;
cout<<q->data<<endl;
}
}
void List::Insert(int val)
{
LinkNode *q=first->link;
int f=1;
while(q!=NULL)
{
if(q->data==val)
{
f=0;
break;
}
q=q->link;
}
if(f)
{
q=new LinkNode(val);
q->link=first->link;
first->link=q;
}
}
int main()
{
List L;
L.input();
L.Sort();
//L.output();
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int val;
cin>>val;
L.Insert(val);
}
L.Sort();
L.output();
return 0;
}
顺序表
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
class SeqList
{
private:
int *data1;
int *data2;
int maxsize;
int last1;
int last2;
public:
SeqList(int sz);
~SeqList()
{
delete[] data1;
delete[] data2;
}
void input1(int n);
void output1();
void input2(int n);
void output2();
void Insert(int pos,int val);
void Delete(int val);
void cross();
void Union();
void Sort();
int Findlocation(int val);
};
SeqList::SeqList(int sz)
{
if(sz>0)
{
data1=new int[sz],last1=-1;
data2=new int[sz],last2=-1;
}
}
void SeqList::input1(int sz)
{
for(int i=1; i<=sz; i++)
{
cin>>data1[++last1];
}
}
void SeqList::input2(int sz)
{
for(int i=1; i<=sz; i++)
{
cin>>data2[++last2];
}
}
void SeqList::output1()
{
for(int i=0; i<=last1; i++)
cout<<" "<<data1[i];
cout<<endl;
}
void SeqList::output2()
{
for(int i=0; i<=last2; i++)
cout<<" "<<data2[i];
cout<<endl;
}
void SeqList::Insert(int pos,int val)
{
for(int i=last1; i>=(pos-1); i--)
data1[i+1]=data1[i];
data1[pos-1]=val;
last1++;
}
void SeqList::Delete(int val)
{
int cnt=0;
for(int i=0; i<=last1; i++)
{
data1[i-cnt]=data1[i];
if(data1[i]==val) cnt++;
}
last1-=cnt;
}
int SeqList::Findlocation(int val)
{
for(int i=0; i<=last1; i++)
{
if(val==data1[i]) return i+1;
}
return -1;
}
void SeqList::cross()
{
for(int i=0;i<=last1;i++)
{
int f=0;
for(int j=0;j<=last2;j++)
{
if(data1[i]==data2[j])
{f=1;break;
}
}
if(f) cout<<" "<<data1[i];
}
cout<<endl;
}
void SeqList::Union()
{
int cnt=0;
for(int i=0;i<=last1;i++)
cout<<" "<<data1[i];
for(int j=0;j<=last2;j++)
{
int f=1;
for(int i=0;i<=last1;i++)
{
if(data1[i]==data2[j])
{f=0;continue;}
}
if(f)
{
cnt++;
data1[last1+cnt]=data2[j];
cout<<" "<<data2[j];
}
}
last1+=cnt;
cout<<endl;
}
void SeqList::Sort()
{
sort(data1,data1+last1+1);
}
int main()
{
SeqList lst(100);
int n ;
cin>>n;
lst.input1(n);
cout<<"A is created as:";
lst.output1();
int pos,val;
cin>>pos>>val;
lst.Insert(pos,val);
cout<<"After inserted A is";
lst.output1();
int findnum;
cin>>findnum;
lst.Delete(findnum);
cout<<"After deleted A is";
lst.output1();
cin>>val;
int index=lst.Findlocation(val);
if(index==-1) printf("%d is not found\n",val);
else printf("%d is located at index of %d\n",val,index);
cin>>val;
index=lst.Findlocation(val);
if(index==-1) printf("%d is not found\n",val);
else printf("%d is located at index of %d\n",val,index);
cin>>n;
lst.input2(n);
cout<<"B is created as:";
lst.output2();
cout<<"A cross B is";
lst.cross();
cout<<"A union B is";
lst.Union();
cout<<"A union B in sequence is";
lst.Sort();
lst.output1();
return 0;
}