数据结构:一元多项式及其基本运算

1、实现方式:可采用线性表的顺序存储结构,但是当多项式的每个项的指数差别很大时,会浪费很多存储空间。所以采用链式存储方式表示,每一项可以表示成一个结点,结点的结构由存放系数的coef域,存放指数的expn域和指向下一个结点的next指针域组成。

2、链表结构:

 3、一元多项式的加法运算:

设La和Lb分别表示两个多项式。Lc表示和多项式。p,q,r分别表示指向单链表的当前项比较指数大小。
(1)若La->expn < Lb->expn,则结点p应是和多项式中的一项,将p复制到r,并使p后移。
(2)若La->expn = Lb->exp ,则将两个结点中的系数相加,当和不为0时,La的系数域加上Lb的系数域作为Lc的系数域;若和为0,则和多项式中没有这一项,p,q后移。
(3)若La->exp  > Lb->exp ,则将结点q复制到Lc中,q后移。

//多项式相加,po1 += po2
bool Add(Poly po1,Poly po2)
{PNode *p = po1->next;                   //p指向po1的第一个节点PNode *q = po2->next;                   //q指向po2的第一个节点PNode *pre = po1;PNode *temp;while(p != NULL && q != NULL)           //当两个多项式均未扫描结束时{if(p->expn < q->expn)               //如果p指向的多项式的指数小于q的指数,将p节点加入到和多项式中{pre->next = p;                  //将p节点加入到pre中pre = p;                        //p即为现在的pre节点p = p->next;                    //继续判断p的下一个节点}else if(p->expn > q->expn)          //将节点q插入到节点p之前,指针q指向原节点的下一个节点{pre->next = q;                  //将q节点加入到和多项式中pre = q;                        //q即为现在的pre节点q = q->next;                    //继续判断q的下一个节点}else if(p->expn == q->expn)         //若指数相同,则相应的系数相加{p->cofe += q->cofe;if(po1->cofe == 0)              //若系数和为0,则删除节点p与q,并将指针指向下一个节点{temp = p->next; free(p);                    //删除节点pp = temp;                   //使指针p指向它原节点的下一个节点temp = q->next;free(q);                    //删除节点qq = temp;                   //使指针q指向它原节点的下一个节点}else{pre->next = p;              //由于将两个多项式的和存储到p,所以将p加入到pre中pre = p;p = p->next;temp = q->next;free(q);                    //将po2链中相应项释放掉,和放到po1链中q = temp;}}}//若多项式中还有剩余,则将剩余的节点加入到和多项式中pre->next = p ? p : q;return true;
}

4、一元多项式的减法运算:

算法:将减数多项式的所有系数先变为相反数,然后调用多项式相加的函数进行运算。

//多项式相减,po1 -= po2
bool Sub(Poly po1,Poly po2)                 //相减就是先将减数中每一项的系数变为负,再将两个多项式相加
{PNode *p = po1->next;                   //p指向po1的第一个节点PNode *q = po2->next;                   //q指向po2的第一个节点PNode *pre = po1;PNode *temp;while(q->next != NULL)                  //将q中的每一项的系数变为负{q->cofe = 0 - q->cofe;q = q->next;}q = po2->next;                          //上一个循环将q指向最后一个节点,现在重新使q变成po2->nextwhile(p != NULL && q != NULL)           //当两个多项式均未扫描结束时{if(p->expn < q->expn)               //如果p指向的多项式的指数小于q的指数,将p节点加入到和多项式中{pre->next = p;                  //将p节点加入到pre中pre = p;                        //p即为现在的pre节点p = p->next;                    //继续判断p的下一个节点}else if(p->expn > q->expn)          //将节点q插入到节点p之前,指针q指向原节点的下一个节点{pre->next = q;                  //将q节点加入到和多项式中pre = q;                        //q即为现在的pre节点q = q->next;                    //继续判断q的下一个节点}else if(p->expn == q->expn)         //若指数相同,则相应的系数相加{p->cofe += q->cofe;if(po1->cofe == 0)              //若系数和为0,则删除节点p与q,并将指针指向下一个节点{temp = p->next; free(p);                    //删除节点pp = temp;                   //使指针p指向它原节点的下一个节点temp = q->next;free(q);                    //删除节点qq = temp;                   //使指针q指向它原节点的下一个节点}else{pre->next = p;              //由于将两个多项式的和存储到p,所以将p加入到pre中pre = p;p = p->next;temp = q->next;free(q);                    //将po2链中相应项释放掉,和放到po1链中q = temp;}}}//若多项式中还有剩余,则将剩余的节点加入到和多项式中pre->next = p ? p : q;return true;
}

5、一元多项式的乘法运算:

  两个一元多项式的相乘运算,需要将一个多项式的每一项的指数与另一个多项式的每一项的指数相加,并将其系数相乘。
例如两个多项式A(x)和B(x)相乘后得到C(x)。A(x)=4x4+3x2+5x,B(x)=6x3+7x2+8x,C(x)=24x7+28x6+50x5+51x4+59x3+40x2表示成链式存储结构如下图所示。

算法思想:设A、B和C分别是多项式A(x)、B(x)和C(x)对应链表的头指针,要计算出A(x)和B(x)的最高指数和,即4+3=7,则A(x)和B(x)的乘机C(x)的指数范围在0~7之间。然后将A(x)的各项按照指数降幂排列,将B(x)按照指数升幂排列,分别设两个指针pa和pb,pa用来指向链表A,pb用来指向链表B,从第一个结点开始计算两个链表的expn域的和,并将其与k比较(k为指数和的范围,从7到0递减),使链表的和呈递减排列。若和小于k,则pb=pb->next;若和等于k,则求出两个多项式系数的乘积,并将其存入新结点中。若和大于k,则pa=pa->next。这样就可以得到多项式 A(x)和B(x)的乘积C(x)。算法结束后重新将链表B逆置,将其恢复原样。
 

PNode *Reverse(Poly pl)              //链表逆置,使一元多项式呈指数递增形式
{assert(pl != NULL);if(pl == NULL){return false;}PNode *q = pl->next;PNode *p = NULL;PNode *tmp;while(q){tmp = q->next;                    //tmp指向链表的待处理节点q->next = p;                      //将链表节点逆置p = q;                            //p指向刚逆置后链表节点q = tmp;                          //q指向下一准备逆置的节点}pl->next = p;                         //将头结点的指针指向已经逆置后的节点return pl;
}//多项式相乘,po1 *= po2
//相乘前,A,B两个多项式均是升幂排序
//相乘时,A为降幂排序,B为升幂排序
PNode *Mutil(Poly po1,Poly po2)            //两个多项式相乘,应该是第一个多项式中的每一项分别与第二个多项式相乘,将相乘得到的结果都存在第一个多项式中,再调用合并多项式的函数
{PNode *p1,*p2,*tmp,*ne,*head;              int k,maxExpn,minExpn;float coef;                               //总的指数和head = (PNode *)malloc(sizeof(PNode));//头结点 head->next = NULL;if(po1->next !=NULL && po2->next != NULL){minExpn = po1->next->expn + po2->next->expn; //minExpn为两个多项式中指数和的最小值 Reverse(po1);                                //将A降幂排列 Reverse(po2);                                //将B降幂排列 maxExpn = po1->next->expn + po2->next->expn; //maxExpn为两个多项式中指数和的最大值}else{        return head;}  tmp = head;Reverse(po2);                           //将po2升幂排列 for(k = maxExpn;k >= minExpn;k--){                                      //多项式的乘积指数范围为:minExpn~maxExpn//根据两项的指数和使每一次循环都得到新多项式中一项  p1 = po1->next;while(p1 !=NULL && p1->expn > k){                              //找到p1的位置 p1 = p1->next;}p2 = po2->next;while(p2!=NULL && p1!=NULL && p1->expn + p2->expn < k){                               //如果指数和和小于k,pb后移结点 p2 = p2->next;}          coef=0.0;          while(p1!=NULL && p2!=NULL)		   {			   if(p1->expn + p2->expn == k)			   {                           //如果指数和等于k,系数和累加,且pa,pb均后移结点 				   coef += p1->cofe *p2->cofe;                  p1 = p1->next;                   p2 = p2->next;             }               else if(p1->expn + p2->expn > k)				{                         //如果指数和大于k,pb后移结点					p1 = p1->next;				}				else				{                         //如果指数和和小于k,pb后移结点                    p2 = p2->next;				}    			}			if(coef!=0.0)			{//如果系数和不为0,则生成新结点,将系数和指数赋给新结点后插入到新多项式中 				ne = (PNode *)malloc(sizeof(PNode));				ne->cofe = coef;               ne->expn = k;                ne->next = tmp->next;				tmp->next = ne;				tmp = ne;			}		}		Reverse(po2);		Reverse(head);	    return head;                     //返回新多项式的头结点	
}

6、完整代码实现:

(1)poly.h:

//利用带头节点的单链表表示一元多项式
#pragma oncetypedef struct PNode
{double cofe;//系数int expn;//指数struct PNode *next;
}PNode,*Poly;//void InitPoly(Poly po);//按指数升序排列
bool Insert(Poly po,double cofe,int expn);void Show(Poly po);//多项式相加,po1 += po2
bool Add(Poly po1,Poly po2);//多项式相减,po1 -= po2
bool Sub(Poly po1,Poly po2);//单链表逆置
PNode *Reverse(Poly pl);//多项式相乘,po1 *= po2
PNode *Mutil(Poly po1,Poly po2);

(2)poly.cpp:

//利用带头节点的单链表表示一元多项式
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "poly.h"void InitPoly(Poly po)
{po->next = NULL;
}//查找这个数应该存放的位置
static PNode *Search(Poly po,int expn)
{PNode *p;for(p = po;p->next != NULL;p = p->next){if(p->next->expn >= expn){return p;}}return p;
}//按指数升序排列
bool Insert(Poly po,double cofe,int expn)
{PNode *p = Search(po,expn);PNode *q = p->next;//如果该节点存在,则合并同类项if(p->next != NULL && p->next->expn == expn) //合并同类项{q->cofe += cofe;if(-0.00001<q->cofe && q->cofe<0.00001) //系数为0{p->next = q->next;free(q);}}//不存在,则创建新的节点else  //创建新节点{q = (PNode *)malloc(sizeof(PNode));q->cofe = cofe;q->expn = expn;q->next = p->next;p->next = q;}return true;
}void Show(Poly po)
{PNode *p = po->next;while(p){printf("%1.1f",p->cofe);if(p->expn){printf("*x^%d",p->expn);}if(p->next&&p->next->cofe>0){printf("+");}p=p->next;}printf("\n");
}//多项式相加,po1 += po2
bool Add(Poly po1,Poly po2)
{PNode *p = po1->next;                   //p指向po1的第一个节点PNode *q = po2->next;                   //q指向po2的第一个节点PNode *pre = po1;PNode *temp;while(p != NULL && q != NULL)           //当两个多项式均未扫描结束时{if(p->expn < q->expn)               //如果p指向的多项式的指数小于q的指数,将p节点加入到和多项式中{pre->next = p;                  //将p节点加入到pre中pre = p;                        //p即为现在的pre节点p = p->next;                    //继续判断p的下一个节点}else if(p->expn > q->expn)          //将节点q插入到节点p之前,指针q指向原节点的下一个节点{pre->next = q;                  //将q节点加入到和多项式中pre = q;                        //q即为现在的pre节点q = q->next;                    //继续判断q的下一个节点}else if(p->expn == q->expn)         //若指数相同,则相应的系数相加{p->cofe += q->cofe;if(po1->cofe == 0)              //若系数和为0,则删除节点p与q,并将指针指向下一个节点{temp = p->next; free(p);                    //删除节点pp = temp;                   //使指针p指向它原节点的下一个节点temp = q->next;free(q);                    //删除节点qq = temp;                   //使指针q指向它原节点的下一个节点}else{pre->next = p;              //由于将两个多项式的和存储到p,所以将p加入到pre中pre = p;p = p->next;temp = q->next;free(q);                    //将po2链中相应项释放掉,和放到po1链中q = temp;}}}//若多项式中还有剩余,则将剩余的节点加入到和多项式中pre->next = p ? p : q;return true;
}//多项式相减,po1 -= po2
bool Sub(Poly po1,Poly po2)                 //相减就是先将减数中每一项的系数变为负,再将两个多项式相加
{PNode *p = po1->next;                   //p指向po1的第一个节点PNode *q = po2->next;                   //q指向po2的第一个节点PNode *pre = po1;PNode *temp;while(q->next != NULL)                  //将q中的每一项的系数变为负{q->cofe = 0 - q->cofe;q = q->next;}q = po2->next;                          //上一个循环将q指向最后一个节点,现在重新使q变成po2->nextwhile(p != NULL && q != NULL)           //当两个多项式均未扫描结束时{if(p->expn < q->expn)               //如果p指向的多项式的指数小于q的指数,将p节点加入到和多项式中{pre->next = p;                  //将p节点加入到pre中pre = p;                        //p即为现在的pre节点p = p->next;                    //继续判断p的下一个节点}else if(p->expn > q->expn)          //将节点q插入到节点p之前,指针q指向原节点的下一个节点{pre->next = q;                  //将q节点加入到和多项式中pre = q;                        //q即为现在的pre节点q = q->next;                    //继续判断q的下一个节点}else if(p->expn == q->expn)         //若指数相同,则相应的系数相加{p->cofe += q->cofe;if(po1->cofe == 0)              //若系数和为0,则删除节点p与q,并将指针指向下一个节点{temp = p->next; free(p);                    //删除节点pp = temp;                   //使指针p指向它原节点的下一个节点temp = q->next;free(q);                    //删除节点qq = temp;                   //使指针q指向它原节点的下一个节点}else{pre->next = p;              //由于将两个多项式的和存储到p,所以将p加入到pre中pre = p;p = p->next;temp = q->next;free(q);                    //将po2链中相应项释放掉,和放到po1链中q = temp;}}}//若多项式中还有剩余,则将剩余的节点加入到和多项式中pre->next = p ? p : q;return true;
}PNode *Reverse(Poly pl)              //链表逆置,使一元多项式呈指数递增形式
{assert(pl != NULL);if(pl == NULL){return false;}PNode *q = pl->next;PNode *p = NULL;PNode *tmp;while(q){tmp = q->next;                    //tmp指向链表的待处理节点q->next = p;                      //将链表节点逆置p = q;                            //p指向刚逆置后链表节点q = tmp;                          //q指向下一准备逆置的节点}pl->next = p;                         //将头结点的指针指向已经逆置后的节点return pl;
}//多项式相乘,po1 *= po2
//相乘前,A,B两个多项式均是升幂排序
//相乘时,A为降幂排序,B为升幂排序
PNode *Mutil(Poly po1,Poly po2)            //两个多项式相乘,应该是第一个多项式中的每一项分别与第二个多项式相乘,将相乘得到的结果都存在第一个多项式中,再调用合并多项式的函数
{PNode *p1,*p2,*tmp,*ne,*head;              int k,maxExpn,minExpn;float coef;                               //总的指数和head = (PNode *)malloc(sizeof(PNode));//头结点 head->next = NULL;if(po1->next !=NULL && po2->next != NULL){minExpn = po1->next->expn + po2->next->expn; //minExpn为两个多项式中指数和的最小值 Reverse(po1);                                //将A降幂排列 Reverse(po2);                                //将B降幂排列 maxExpn = po1->next->expn + po2->next->expn; //maxExpn为两个多项式中指数和的最大值}else{        return head;}  tmp = head;Reverse(po2);                           //将po2升幂排列 for(k = maxExpn;k >= minExpn;k--){                                      //多项式的乘积指数范围为:minExpn~maxExpn//根据两项的指数和使每一次循环都得到新多项式中一项  p1 = po1->next;while(p1 !=NULL && p1->expn > k){                              //找到p1的位置 p1 = p1->next;}p2 = po2->next;while(p2!=NULL && p1!=NULL && p1->expn + p2->expn < k){                               //如果指数和和小于k,pb后移结点 p2 = p2->next;}          coef=0.0;          while(p1!=NULL && p2!=NULL)		   {			   if(p1->expn + p2->expn == k)			   {                           //如果指数和等于k,系数和累加,且pa,pb均后移结点 				   coef += p1->cofe *p2->cofe;                  p1 = p1->next;                   p2 = p2->next;             }               else if(p1->expn + p2->expn > k)				{                         //如果指数和大于k,pb后移结点					p1 = p1->next;				}				else				{                         //如果指数和和小于k,pb后移结点                    p2 = p2->next;				}    			}			if(coef!=0.0)			{//如果系数和不为0,则生成新结点,将系数和指数赋给新结点后插入到新多项式中 				ne = (PNode *)malloc(sizeof(PNode));				ne->cofe = coef;               ne->expn = k;                ne->next = tmp->next;				tmp->next = ne;				tmp = ne;			}		}		Reverse(po2);		Reverse(head);	    return head;                     //返回新多项式的头结点	
}

(3)main.cpp:

#include <stdio.h>
#include "poly.h"int main()
{PNode po1;InitPoly(&po1);Insert(&po1,1,1);Insert(&po1,2,2);Insert(&po1,5,5);Insert(&po1,3,0);Insert(&po1,6,2);Insert(&po1,-5,5);Show(&po1);PNode po2;InitPoly(&po2);Insert(&po2,1,1);Insert(&po2,2,2);Insert(&po2,5,5);Insert(&po2,3,0);Insert(&po2,6,2);Insert(&po2,-5,5);Insert(&po2,5,3);Insert(&po2,3,1);Insert(&po2,6,2);Show(&po2);PNode *p = Mutil(&po1,&po2);Show(p);//Add(&po1,&po2);//Show(&po1);//Sub(&po1,&po2);//Show(&po1);return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/143293.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

一元多项式计算

目录 题目的内容及要求--------------------------------------------2需求分析-------------------------------------------------------2概要设计-------------------------------------------------------2 1、存储结构------------------------------------------------…

【数据结构】一元多项式的表示及相加

文章目录 ⭐️写在前面的话⭐️一元多项式的表示及相加初始化0_1、初始化链表0_2_1、头插法插入多项式的项(没有相同项)0_2_2、将要插入的相同&#xff0c;链表中有相同项&#xff0c;对应系数相加0_3、从链表中查找是否有相同的指数项0_4、对已经创建好的一元多项式按指数大小…

数据结构(严蔚敏)【一元多项式的运算】【C语言】

1、一元多项式的运算&#xff1a;实现两个多项式加、减乘运算 设计内容&#xff1a; 用顺序存储结构实现一元多项式的加法、减法和乘法。具体要求为&#xff1a;用五个函数分别实现一元多项式的创建、输出、加法、减法和乘法&#xff1b; 设计思路&#xff1a; 将顺序表数组…

算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175)

算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175&#xff09; 文章目录 算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175&#xff09;前言为什么突然想学算法了&#xff1f;为什么选择码蹄集作为刷题软件&#xff1f; 目录1. MT2151 权值计算2. MT2152 黑客小码哥3. MT2153 来给…

Linux基础之LVM卷管理

LVM LVM是 Logical Volume Manager&#xff08;逻辑卷管理&#xff09;的简写&#xff0c;它是Linux环境下对磁盘分区进行管理的一种机制。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小&#xff0c;以分配合适的硬盘空间。普通的…

linux lvcreate,LFCS:如何使用vgcreate,lvcreate和lvextend命令管理和创建LVM - 第11部分...

因为在LFCS考试要求有效的二月变化 2&#xff0c;2016年 &#xff0c;我们增加了必要的专题到LFCS系列发表在这里。 为了准备这场考试&#xff0c;你是高度鼓励使用联邦经济竞争法系列为好。 LFCS&#xff1a;管理LVM和创建LVM分区 - 第11部分 安装Linux系统时最重要的决定之一…

lvm 制作

壹&#xff1a; 创建LVM 逻辑卷 1&#xff0c;将物理盘格式为pv卷&#xff08;物理卷&#xff09;&#xff0c;使用pvcreate 命令 pvcreate /dev/sdc 或则是 pvcreate /dev/sdc /dev/sdb pvdisplay 或pvs 命令查看 PV 物理卷得创建情况 2,创建卷组 VG 通过vgcreate 命令,将pv加…

lvcreate 常用命令举例

http://linux.cn/article-5117-1.html4 个 lvcreate 常用命令举例 2015-3-25 15:09| 查看: 2752| 评论: 3| 收藏: 3| 分享: 10 原文&#xff1a;http://www.ehowstuff.com/4-lvcreate-command-examples-on-linux/作者&#xff1a; skytech译文&#xff1a;LCTT https://linux.…

49.逻辑卷管理4,逻辑卷管理详解,lvscan,lvcreate,lvdisplay,lvextend,lvreduce,lvremove,lvresize,lvchange

逻辑卷相关操作 可以把逻辑卷想象成分区&#xff0c;那么这个逻辑卷当然也需要被格式化和挂载。另外&#xff0c;逻辑卷也是可以动态调整大小的&#xff0c;而且数据不会丟失&#xff0c;也不用卸载逻辑卷。 常用的命令有 lvscan Lvcreate Lvdisplay lvextend lvreduce Lvremov…

oppo手机删除计算机怎样恢复,【数据恢复篇】oppo手机删掉的照片怎么恢复

原标题&#xff1a;【数据恢复篇】oppo手机删掉的照片怎么恢复 手机删掉的照片可以恢复吗&#xff1f;oppo手机删掉的照片怎么恢复&#xff1f;很多人会奇怪oppo手机删掉的照片还能恢复吗&#xff1f;现在科技技术的提高&#xff0c;照片能够被恢复也是很简单的。像我们所知道的…

苹果手机照片误删恢复的方法

苹果手机照片误删恢复的方法&#xff1f;苹果手机相册里都有一个【最近删除】相册&#xff0c;为了恢复我们手机里误删的照片&#xff0c;我们首先可以打开相册&#xff0c;然后找里面的最近删除的相簿&#xff0c;看看里面有没有自己误删的照片&#xff0c;如果有的话&#xf…

android sd卡数据恢复软件下载,手机SD卡内存卡数据恢复软件

手机SD卡内存卡数据恢复软件免费版是一款专门解决内存卡等存储介质数据丢失问题的恢复软件&#xff0c;支持各个型号的SD卡、内存卡及U盘的删除恢复、格式化恢复等。 手机SD卡内存卡数据恢复软件是一款简单易用功能强大的数据恢复软件。该软件有针对性的对各类内存卡进行数据恢…

android 恢复照片误删,安卓手机数据恢复:红米手机照片误删怎么恢复

原标题&#xff1a;安卓手机数据恢复&#xff1a;红米手机照片误删怎么恢复 红米手机误删照片怎么恢复&#xff1f;小编的也爷爷使用的是红米手机&#xff0c;有一天跟我说“他误删了手机上的很多张照片&#xff0c;还一直抱怨自己眼花乱删东西”。小编就赶紧安慰爷爷还说会帮他…

android删除sd卡照片恢复,安卓手机照片误删怎么恢复

现如今国内大多的人都拥有一部智能手机&#xff0c;使用手机拍摄照片记录生活中的美好也成为了一种普遍流行的行为。当我们用手机照片记录身边点滴后&#xff0c;经过时间的打磨&#xff0c;我们也需要整理这些照片&#xff0c;误删照片随之成为一个严峻的问题&#xff0c;手机…

android删除手机照片恢复软件,安卓手机上照片删除如何恢复?

原标题&#xff1a;安卓手机上照片删除如何恢复&#xff1f; 安卓手机上的照片被删除了如何恢复&#xff1f;现在大部分手机都有手机最近删除相册&#xff0c;当发现手机上的数据被自己误删的时候&#xff0c;可以在手机最近删除相册中快速恢复。不过呢&#xff0c;最近删除的相…

android系统手机能看到照片,安卓怎么恢复手机照片?原来可以这样做

安卓怎么恢复手机照片&#xff1f;原来可以这样做~其实照片在我们生活工作中扮演者重要的色&#xff0c;对很多人来说一张照片不仅仅是一份回忆&#xff0c;更是感情沟通的桥梁&#xff0c;误删了手机里重要的照片怎么找回来呢&#xff1f;手机照片恢复管家免费教你哦~ 一、安卓…

android 恢复照片误删,安卓手机照片误删怎么恢复?一般人不知道这个恢复方法...

安卓手机照片误删怎么恢复&#xff1f;一般人不知道这个恢复方法 2019年06月12日 17:40作者&#xff1a;黄页编辑&#xff1a;黄页 分享 安卓手机照片误删怎么恢复?一般人不知道这个恢复方法。手机可以说取得相当大的成功了&#xff0c;在近些年来&#xff0c;手机相机慢慢“霸…

android手机照片恢复,安卓手机照片怎么恢复?简单恢复方法分享

安卓手机照片怎么恢复?手机作为中国微信用户强大的社交工具&#xff0c;可以说手机相机已成为人们生活的重要部分&#xff0c;不小心误删手机相册照片或者微信等图片&#xff0c;我们在使用手机过程中是不可避免的&#xff0c;别担心&#xff0c;小编有办法恢复的&#xff0c;…

手机回收站的照片超过30天删除了怎么恢复

苹果手机有一个功能是&#xff0c;照片删除后的30天内还可以从最近删除里还原&#xff0c;但是&#xff0c;手机回收站的照片超过30天删除了怎么恢复&#xff1f;依靠苹果公司给到的衍生软件好像是做不到的了&#xff0c;小编却有一个办法&#xff01;有一款超好用的数据恢复软…

android mac 照片恢复,如何恢复照片?这样做,手机照片直接恢复!

如何恢复照片?现在人们都喜欢用照片记录每时每刻&#xff0c;所以大家手机里往往都存满了照片。但是存储在手机上的照片如果被误删的时候应该怎么样去恢复呢?今天小编给大家介绍几个手机照片恢复的方法&#xff0c;希望可以解决你的烦恼~ 方法一&#xff1a;从最近删除恢复 在…