package node;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
import java.util.Stack;
public class model {
private node head=new node(1,“aa”);
public StacknodeStack=new Stack<>();
public void add(node p)
{
//head 不能动,p为添加的结点
node temp=head;
//遍历链表
while(true) {
if(temp.next==null){
break;
}
temp=temp.next;
}
temp.next=p;
}
public node getHead() {
return head;
}
public void addorder(node p){
//因为头节点不动,需要复制指针,找前结点,或者插入不了
node temp=head;
boolean flag=false;//标识符号是否存在
while(true){
if(temp.next==null){//插入为末尾
break;
}
if(temp.next.data>p.data){//找到位置了插入temp.next
break;
}else if(temp.next.data==p.data){
flag=true;//编号存在不能添加
break;
}//找到插入位置的temp
temp=temp.next;//后移
}
if(flag){
System.out.println("data存在了");
}else{
//charu
p.next=temp.next;
temp.next=p;
}
}
//显示链表
public void list(){
if(head.next==null){
System.out.println("kog");
}
node p=head.next;
while(true){
//判断是否为最后
if(p.next==null){
System.out.println(p);
break;
}
System.out.println(p);
p=p.next;//后移动
}
}
//反向输出链表 用栈
public void pain(node head){
if(head.next==null)
return ;
node p=head;
while(p!=null){
nodeStack.push(p);
p=p.next;
}
while(nodeStack.size()>0){
System.out.println(nodeStack.pop());
}
}
//列表反转
/*
思想 创建一个rehead ,遍历数组,把节点放入到rehead的后面,头插法
rehead的结点占位 最后让最开始的头节点取代rehead结点
注意rehead为每次的头节点,但是节点是头插法,每次放入到前面
*/
public void readd(node phead){
node pnode=phead.next;
node next=null;//指向当前结点的下一个结点
node rehead=new node();
//遍历
while(pnode!=null){
next=pnode.next;//储存pnode的下一个结点
pnode.next=rehead.next;
rehead.next=pnode;
pnode=next;
}
phead.next=rehead.next;
}
public static void main(String[] args) {
node p1=new node(1,"ssss");
node p2=new node(2,"aaa");
node p3=new node(3,"s5s");
node p4=new node(4,"ss5ss");
model list1=new model();
model list2=list1;
list1.addorder(p2);
list1.addorder(p3);
list1.addorder(p1);
list1.addorder(p4);
list1.list();
list1.pain(list1.getHead());
list1.list();
}
}
package node;
public class node {
public int data;
public String name;
public node next;
public node(int data,String name)
{
this.data=data;
this.name=name;
}
public node(){}
//显示方便重写tostring
@Override
public String toString() {
return "data"+data+"name"+name;
}
}