• 多项式链表多项式相加


    //多项式相加
    LinkList* add2Link(LinkList*L1, LinkList*L2)
    {
    	LinkList*p1, *p2;
    	LinkList*head , *pre, *p;
    	head = new LinkList;
    	head->next = NULL;
    	pre = head;
    	p1 = L1->next;
    	p2 = L2->next;
    	while (p1&&p2)
    	{
    		if (p1->exp == p2->exp)
    		{
    			p = new LinkList;
    			p->coef = p1->coef + p2->coef;
    			p->exp = p1->exp;
    			p1 = p1->next;
    			p2 = p2->next;
    		}
    		else if ((p1->exp) < (p2->exp))
    		{
    			p = new LinkList;
    			p->coef = p1->coef;
    			p->exp = p1->exp;
    			p1 = p1->next;
    		}
    		else
    		{
    			p = new LinkList;
    			p->coef = p2->coef;
    			p->exp = p2->exp;
    			p2 = p2->next;
    		}
    		pre->next = p;
    		pre = p;
    	}
    	if (p1&&!p2)
    	{
    		while (p1)
    		{
    			p = new LinkList;
    			p->coef = p1->coef;
    			p->exp = p1->exp;
    			p1 = p1->next;
    			pre->next = p;
    			pre = p;
    		}
    	}
    	else if (!p1&&p2)
    	{
    		while (p2)
    		{
    			p = new LinkList;
    			p->coef = p2->coef;
    			p->exp = p2->exp;
    			p2 = p2->next;
    			pre->next = p;
    			pre = p;
    		}
    	}
    	pre->next = NULL;
    	return head;
    }
    

      

    struct Node
    {
    	int data;
    	int exp;
    };
    
    list<Node>* add2list(list<Node>* l1, list<Node>*l2)
    {
    	list<Node>l3;
    	
    	while(!l1->empty()&&!l2->empty())
    	{
    		if(l1->back().exp==l2->back().exp)
    		{
    			Node n1=new Node;
    			n1.data=l1->back().data+l2->back().data;
    			n1.exp=l1->back().exp;
    			l3.push_front(n1);
    			l1->pop_back();
    			l2->pop_back();
    		}
    	     else
    		 {
    			 if(l1->back().exp>l2->back().exp)
    			 {
    				 Node n1=new Node;
    			     n1.data=l2->back().data;
    			     n1.exp=l2->back().exp;
    			     l3.push_front(n1);
    			     l2->pop_back();
    			 }
    			 else
    			 {
    				 Node n1=new Node;
    			     n1.data=l1->back().data;
    			     n1.exp=l1->back().exp;
    			     l3.push_front(n1);
    			     l1->pop_back();
    			 }
    		 }
    	}
    
         while(!l2->empty())
    	 {
    		 Node n1=new Node;
    		 n1.data=l2->back().data;
    		 n1.exp=l2->back().exp;
    		 l3.push_front(n1);
    		 l2->pop_back();
    	 }
    	 
    	 while(!l1->empty())
    	 {
    		 Node n1=new Node;
    		 n1.data=l1->back().data;
    		 n1.exp=l1->back().exp;
    		 l3.push_front(n1);
    		 l1->pop_back();
    	 }
    
    	 return *l3;
    }
    

      

  • 相关阅读:
    Android中Alarm的机制
    String字符串操作--切割,截取,替换,查找,比较,去空格.....
    时间类(时间戳的各种转换成)
    android 常用时间格式转换代码
    Android时间戳与字符串相互转换
    Android时间对话框TimePickerDialog介绍
    一种基于Qt的可伸缩的全异步C/S架构server实现(一) 综述
    C++ overloading contructor
    特征生成
    Atitit.软件仪表盘(2)--vm子系统--资源占用监測
  • 原文地址:https://www.cnblogs.com/KennyRom/p/5887309.html
Copyright © 2020-2023  润新知