链表
 /*
    链表的基本操作 
 */
#include<iostream>
using namespace std;
//定义节点的结构体 
struct Node{
    int val;
    Node * next;
    Node(int _val):val(_val),next(NULL){}  //有参构造 
};
int main(){
    Node* p =new Node(1);  //返回的地址,类似java  等价写法:Node node = Node(1); Node *p=&node; 
    Node* q =new Node(2);  //auto,可以自动识别new Node返回值的类型 
    Node* o =new Node(3);
    p->next=q;  //p指向q 
    q->next=o;  //q指向o
Node* head=p; //定义头节点,主要是用于记录
    //添加一个节点(头插法) 
    Node* u =new Node(4);
    u->next=head;   //新加节点指向头节点 
    head=u;         //更新头节点 
    //删除一个节点(链表的删除,不是说将这个节点干掉,而是在原链表遍历的时候,遍历不到即可!) 
    head->next=head->next->next; 
    //遍历链表 
    for(Node* i=head;i;i=i->next){
        cout<<i->val<<endl;
    } 
return 0;
}
//两个链表的归并
class solution{
	public:
		while(l1&&l2)//遍历 
		if(l1->val<l2->val)
		{
			tail=tail->next=l1;
			l1=l1->next;//指针更替 
			else
			{
				tail=tail->next=l2;
				l2=l2->next;
			}
		}
		if(l1) tail->next=l1;//尾节点 
		if(l2) tail->next=l2;
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号