Java和c++类实现单向链表
要毕业了最近一直在笔试或者面试,经常考到数据结构的一些问题,下面简单介绍下链表的实现:
Java:
先定义一个节点类
public class Node {
int node;
Node next;
public Node(int node,Node next)//构造函数
{
this.node=node;
this.next=next;
}
}
链表实现:
public class Mylist {
private Node head;//定义表头节点
private int size;
public Mylist()//初始化
{
head=null;
size=0;
}
public void add(int i)//添加
{
if(head==null)
{
head=new Node(i, null);
}
else
{
head=new Node(i,head);
}
size++;
}
public int size()//链表的大小
{
return size;
}
public void reverse()//链表翻转
{
if(head==null)
{
return;
}
else
{
Node end,p,q;
p=head;
end=null;
while(p!=null)
{
q=p.next;
p.next=end;
end=p;
p=q;
}
head=end;
}
}
public void sort()//链表排序
{ int temp;
for(int i=0;i<size;i++)
{
for(int j=0;j<size-1-i;j++)
{
if(find(head,j).node>find(head,j+1).node)
{
temp=find(head,j).node;
find(head,j).node=find(head,j+1).node;
find(head,j+1).node=temp;
}
}
}
}
private Node find(Node N,int i)//查找
{
while(0!=i--)
N=N.next;
return N;
}
public void print()//打印链表
{
Node temp=head;
while(temp!=null)
{
System.out.print(temp.node+" ");
temp=temp.next;
}
System.out.print('\n');
}
}
C++:
struct Node{ //类实现链表
int node;
Node *next;
Node(int no,Node *ne)
{
node=no;
next=ne;
}
};
class list{
private:
Node *head;
int size;
public:
void add(int i)
{
if(head==NULL)
{
head=new Node(i,NULL);
}
else
{
head=new Node(i,head);
}
}
void print()
{
Node *temp;
temp=head;
while(temp!=NULL)
{
cout<<temp->node<<" ";
temp=temp->next;
}
}
void reverse()
{
Node *end,*p,*q;
end=NULL;
p=head;
while(p!=NULL)
{
q=p->next;
p->next=end;
end=p;
p=q;
}
head=end;
}
list()
{
head=NULL;
size=0;
}
};