精华内容
下载资源
问答
  • C语言一元多项式加法.doc
    2021-05-21 13:28:31

    C语言一元多项式加法

    //C语言数据结构_一元多项式加法#include #include #include #define OK 1#define ERROR 0typedef int Status;typedef int ElemType;typedef struct LNode //定义结构体{ElemType coef;ElemType exp;struct LNode *next;}LNode,*Linklist;Status CreateList_L(Linklist &L) //初始化链表{L=(Linklist)malloc(sizeof(LNode));L->next=NULL;return OK;}Status InsertList_L(Linklist &L,int i,ElemType c,ElemType e) //在链表中i位置插入元素e{Linklist p=L,s;int j=0;while(p->next!=NULL&&jnext;j++;}s=(Linklist)malloc(sizeof(LNode));s->coef=c;s->exp=e;s->next=p->next;p->next=s;return OK;}Status AddList_L(Linklist &La,Linklist Lb,int len) //将b中的所有项加到a中{Linklist p=Lb;int j=len; while(p->next!=NULL){p=p->next; InsertList_L(La,j,p->coef,p->exp);j++;}return OK;}Status GetLength(Linklist L,int &len) //检查链表长度{Linklist p=L;while(p->next!=NULL){p=p->next;len++;}return OK;}Status PrintList_L(Linklist L) //输出链表{ Linklist p=L;if(p==NULL) return ERROR;printf("两多项式的和为\n");while(p->next!=NULL){p=p->next;if(p->coef!=0) printf("%d,%d ",p->coef,p->exp);}putchar('\n');return OK;}Status ReorderList_L(Linklist &L) //将链表按指数从小到大排序{Linklist p=L,q=L;ElemType temp; for(p=L;p->next!=NULL;p=p->next)for(q=p;q!=NULL;q=q->next){if(p->exp>q->exp){temp=p->exp; p->exp=q->exp; q->exp=temp; temp=p->coef; p->coef=q->coef; q->coef=temp;}}return OK;}Status CheckList_L(Linklist &L) //按指数由小到大排序后,合并同类项{Linklist p=L,s;ReorderList_L(p);p=p->next;while(p->next!=NULL){if(p->next->exp==p->exp){p->coef+=p->next->coef;s=(Linklist)malloc(sizeof(LNode));s=p->next;p->next=s->next;free(s);}else{p=p->next;}}return OK;}void main(){Linklist La,Lb;CreateList_L(La);CreateList_L(Lb);int lena=0,i=0;ElemType tempcoef,tempexp;printf("请逐项输入系数与指数,格式为a,b(a为系数,b为指数)。输入0,0结束\n");printf("请输入第一个一元多项式\n");while(1){ scanf("%d,%d",&tempcoef,&tempexp);if(tempcoef==0&&tempex

    更多相关内容
  • 一元多项式加法运算

    2021-01-01 07:39:17
    编写一元多项式加法运算程序。要求用线性链表存储一元多项式。该程序有以下几个功能: 1. 多项式求和 输入:输入三个多项式,建立三个多项式链表Pa、Pb、Pc (提示:调用CreatePolyn(polynomial &P,int m)。 输出:...
  • 数据结构课程设计一元多项式加法减法乘法运算的实现 1.一元多项式加法减法乘法运算的实现 1.1设计内容及要求 1)设计内容 1使用顺序存储结构实现多项式加减乘运算 例如 , 求和结果 2使用链式存储结构实现多项式加减乘...
  • 1)输入并建立多项式;(2)两个多项式相加; (3)输出多项式:n, c1, e1, c2, e2, …cn , en, 其中,n是多项式项数,ci和ei分别是第 i 项的系数和指数,序列按指数降序排列。
  • 算法与数据结构实验,一元多项式加法,升序排列,相加为0,也可以,没bug
  • 数据结构——一元多项式加法,使用数据结构中的线性表实现一元多项式加法
  • 数据结构——一元多项式加法、减法、乘法运算的实现,可以直接使用
  • 一元多项式加法减法乘法运算的实现 1.1设计内容及要求 1)设计内容 1使用顺序存储结构实现多项式加减乘运算 例如 , 求和结果 2使用链式存储结构实现多项式加减乘运算 求和结果 2设计要求 1用C语言编程实现上述实验...
  • C语言实现一元多项式加法运算

    千次阅读 2020-10-08 23:12:11
    回到正题,一元多项式加法运算,大概是这样的: 知道怎么操作了之后就来看看如何储存一元多项式叭: 很明显为了方便操作,而且每一项都含有 系数(coefficient)、指数 (index),为了避免S形一元多项式带来的...

    说到一元多项式相加,相信很多小伙伴都不会陌生,甚至 “合并同类项” 已经要脱口而出了(因为上节课本人就是这样的哈哈~)
    回到正题,一元多项式的加法运算,大概是这样的:

    在这里插入图片描述
    知道怎么操作了之后就来看看如何储存一元多项式叭:
    很明显为了方便操作,而且每一项都含有 系数(coefficient)、指数 (index),为了避免S形一元多项式带来的空间浪费,我们采用链式结构储存一元多项式,本题中采用普通的单链表进行储存(不需要方便访问头尾结点时可以不用循环链表)

    话不多说,先整两个一元多项式看看↓
    老规矩,数据类型和结构体定义先给出来
    PNode、LinkList分别表示结点和链表,Datatype即int,coe为系数,ind为指数

    //重定义类型和声明函数
    typedef struct Node* PNode;
    typedef struct Node* LinkList;
    typedef int Datatype;
    struct Node
    {
    	Datatype      coe;
    	Datatype      ind;
    	struct Node* next;
    };
    PNode Add_POLYA(LinkList head1, LinkList head2);
    
    

    构建一元多项式:
    ps:当接收到的系数和指数同时为0时停止输入,即一个多项式的结束

    LinkList setnulllist_link()
    {
    	LinkList head = (LinkList)malloc(sizeof(struct Node));
    	if (head != NULL) head->next = NULL;
    	else printf("alloc failure");
    	return head;
    }
    
    void createlist_tail(struct Node* head)
    {
    	PNode p = NULL;
    	PNode q = head;
    	Datatype coe;
    	Datatype ind;
    	printf("please input coefficient and index:\n");
    	scanf_s("%d,%d", &coe, &ind);
    	while ((coe != 0) || (ind != 0))
    	{
    		p = (struct Node*)malloc(sizeof(struct Node));
    		p->coe = coe;
    		p->ind = ind;
    		p->next = NULL;
    		q->next = p;
    		q = p;
    		scanf_s("%d,%d", &coe, &ind);
    	}
    	return;
    }
    

    再来看多项式相加函数:
    ps:两个多项式的和最后储存在第一个多项式head1中,不喜欢的小伙伴也可以自行调整嗷~

    PNode Add_POLYA(LinkList head1, LinkList head2)
    {
    	PNode pre = NULL, p = NULL, qre = NULL, q = NULL;
    	pre = head1;
    	p = head1->next;
    	qre = head2;
    	q = head2->next;
    	if (qre == NULL)
    	{
    		return head1;
    	}
    	while (p != NULL)
    	{
    		if (q == NULL)
    		{
    			return head1;
    		}
    		//两个项指数相等时
    		if (p->ind == q->ind)
    		{
    			p->coe = q->coe + p->coe;
    			//两项和为0时
    			if (p->coe == 0)
    			{
    				pre->next = p->next;
    				free(p);
    				p = pre->next;
    				qre->next = q->next;
    				free(q);
    				q = qre->next;
    			}
    			else {
    				pre = p;
    				p = p->next;
    				qre->next = q->next;
    				free(q);
    				q = qre->next;
    			}
    		}
    		//多项式1的项的指数大于多项式2的项时
    		else if (p->ind > q->ind)
    		{
    			qre->next = q->next;
    			q->next = p;
    			pre->next = q;
    			pre = q;
    			q = qre->next;
    		}
    		//多项式2的项指数大小在多项式1的项与下一项中间时
    		else if (q->ind > p->ind && q->ind < (p->next)->ind)
    		{
    			qre->next = q->next;
    			pre = p;
    			p = p->next;
    			q->next = p;
    			pre->next = q;
    			pre = q;
    			q = qre->next;
    		}
    		else if (q->ind > p->ind && q->ind >= (p->next)->ind)
    		{
    			pre = p;
    			p = p->next;
    		}
    	}
    
    	return head1;
    }
    

    需要注意的就是两个项的指数大小问题(注意看上方的注释嗷~)
    最后来看整体代码与运行结果:

    //链式存储实现多项式加法
    #include<stdio.h>
    #include<stdlib.h> 
    
    //重定义类型和声明函数
    typedef struct Node* PNode;
    typedef struct Node* LinkList;
    typedef int Datatype;
    struct Node
    {
    	Datatype      coe;
    	Datatype      ind;
    	struct Node* next;
    };
    PNode Add_POLYA(LinkList head1, LinkList head2);
    
    LinkList setnulllist_link()
    {
    	LinkList head = (LinkList)malloc(sizeof(struct Node));
    	if (head != NULL) head->next = NULL;
    	else printf("alloc failure");
    	return head;
    }
    
    void createlist_tail(struct Node* head)
    {
    	PNode p = NULL;
    	PNode q = head;
    	Datatype coe;
    	Datatype ind;
    	printf("please input coefficient and index:\n");
    	scanf_s("%d,%d", &coe, &ind);
    	while ((coe != 0) || (ind != 0))
    	{
    		p = (struct Node*)malloc(sizeof(struct Node));
    		p->coe = coe;
    		p->ind = ind;
    		p->next = NULL;
    		q->next = p;
    		q = p;
    		scanf_s("%d,%d", &coe, &ind);
    	}
    	return;
    }
    
    void print(LinkList head)
    {
    	PNode  p = head->next;
    	while (p != NULL)
    	{
    		if (p->next != NULL) {
    			printf("%d,%d ", p->coe, p->ind);
    		}
    		else {
    			printf("%d,%d ", p->coe, p->ind);
    		}
    		p = p->next;
    	}
    	return;
    }
    
    void destorylist_link(LinkList head)
    {
    	PNode  pre = head;
    	PNode p = pre->next;
    	while (p)
    	{
    		free(pre);
    		pre = p;
    		p = pre->next;
    	}
    	free(pre);
    	return;
    }
    
    int main()
    {
    	LinkList head1 = NULL, head2 = NULL;
    	head1 = setnulllist_link();
    	head2 = setnulllist_link();
    	createlist_tail(head1);
    	createlist_tail(head2);
    	Add_POLYA(head1, head2);
    	print(head1);
    	destorylist_link(head1);
    	system("pause");
    	return 0;
    }
    
    PNode Add_POLYA(LinkList head1, LinkList head2)
    {
    	PNode pre = NULL, p = NULL, qre = NULL, q = NULL;
    	pre = head1;
    	p = head1->next;
    	qre = head2;
    	q = head2->next;
    	if (qre == NULL)
    	{
    		return head1;
    	}
    	while (p != NULL)
    	{
    		if (q == NULL)
    		{
    			return head1;
    		}
    		//两项和为0时
    		if (p->ind == q->ind)
    		{
    			p->coe = q->coe + p->coe;
    			if (p->coe == 0)
    			{
    				pre->next = p->next;
    				free(p);
    				p = pre->next;
    				qre->next = q->next;
    				free(q);
    				q = qre->next;
    			}
    			else {
    				pre = p;
    				p = p->next;
    				qre->next = q->next;
    				free(q);
    				q = qre->next;
    			}
    		}
    		//多项式1的项的指数大于多项式2的项时
    		else if (p->ind > q->ind)
    		{
    			qre->next = q->next;
    			q->next = p;
    			pre->next = q;
    			pre = q;
    			q = qre->next;
    		}
    		//多项式2的项指数大小在多项式1的项与下一项中间时
    		else if (q->ind > p->ind && q->ind < (p->next)->ind)
    		{
    			qre->next = q->next;
    			pre = p;
    			p = p->next;
    			q->next = p;
    			pre->next = q;
    			pre = q;
    			q = qre->next;
    		}
    		else if (q->ind > p->ind && q->ind >= (p->next)->ind)
    		{
    			pre = p;
    			p = p->next;
    		}
    	}
    
    	return head1;
    }
    

    运行结果:

    在这里插入图片描述
    当然可能有小伙伴觉得这样不好看,这哪里是一个真正的一元多项式啊!
    没办法,为了过平台上的测试,呜呜~

    大家如果想要美观的话可以自行修改代码中的 print 函数嗷,我就不改啦
    最后说一下,要是copy本篇代码来过实验的话,记得查看print 函数哈,不然有可能会出现格式错误的问题。

    编译器:visual studio 2019,使用其他编译器的小伙伴们记得修改相关函数嗷~

    展开全文
  • 完美的数据结构大作业之选。C语言+链表 实现。不用提前知道多项式项数,可以自动排序,可以合并同类项,可以进行加法、乘法运算。VS环境可运行,其他编程软件找到cpp复制粘贴即可
  • 编程实现一元多项式加法运算。(要求用链表实现) 输入 第一行为一元多项式A, 以 0,0 作为输入结束; 第二行为一元多项式B, 以 0,0 作为输入结束。 输出 多项式A和多项式B的和。 样例输入 5,3 7,8 9,15 0,0 2,0 ...

    题目描述
    编程实现一元多项式的加法运算。(要求用链表实现)

    输入
    第一行为一元多项式A, 以 0,0 作为输入结束;

    第二行为一元多项式B, 以 0,0 作为输入结束。

    输出
    多项式A和多项式B的和。

    样例输入
    5,3 7,8 9,15 0,0
    2,0 6,3 -7,8 0,0

    样例输出
    2x0+11x3+9x^15

    #include<stdio.h>
    #include<malloc.h>
    typedef struct L
    {
        int cof;
        int exp;
        struct L *next;
    }Lnode;
    void init(Lnode*&L)
    {
        L=(Lnode*)malloc(sizeof(Lnode));
        Lnode *p=L,*s;
        int x,y;
        char dot;
        while(scanf("%d%c%d",&x,&dot,&y))//尾插法建链表
        {
            if(x==0&&y==0)
            {
                break;
            }
            s=(Lnode*)malloc(sizeof(Lnode));
            s->cof=x;
            s->exp=y;
            p->next=s;
            p=s;
        }
        p->next=NULL;
    }
    void Add(Lnode*&L1,Lnode*&L2)
    {
        Lnode *s,*p=L1->next,*q=L2->next,*r;
        while(p!=NULL)//遍历L1
        {
            while(q!=NULL)//遍历L2
            {
                r=q->next;
                if(q->exp==p->exp)//如果指数相等,则系数相加
                {
                    q->cof+=p->cof;
                    break;
                }else
                if(r!=NULL && (p->exp>q->exp) && (p->exp<r->exp) )
                {//若不到尾结点,p结点指数比q之前的大,比之后的小,故插在中间位置
                    s=(Lnode*)malloc(sizeof(Lnode));
                    s->cof=p->cof;
                    s->exp=p->exp;
                    q->next=s;
                    s->next=r;
                    break;
                }else
                if(r==NULL)//若到达L2的尾部,则把q(L1的结点)插在L2的尾部
                {
                    s=(Lnode*)malloc(sizeof(Lnode));
                    s->cof=p->cof;
                    s->exp=p->exp;
                    q->next=s;
                    s->next=NULL;
                    break;
                }else
                if(q==L2->next&&p->exp<q->exp)
                {//若q结点的指数比L2的初始结点的大,则插在L2的开头
                 //头插法
                    s=(Lnode*)malloc(sizeof(Lnode));
                    s->cof=p->cof;
                    s->exp=p->exp;
                    L2->next=s;
                    s->next=q;
                    break;
                }else
                q=q->next;//q向后移,遍历L2
            }
            p=p->next;//p向后移,遍历L1
            q=L2->next;//q初始化,指向L2的首结点
        }
    }
    void display(Lnode*L2)
    {
        Lnode*p=L2->next;
        while(p!=NULL)
        {
            if(p->cof!=0)
            printf("%dx^%d",p->cof,p->exp);
            p=p->next;
            if(p!=NULL&&p->cof!=0)
            {
                printf("+");
            }
    
        }
    }
    void dis(Lnode*L)
    {
        Lnode*p=L->next;
        while(p!=NULL)
        {
            printf("%d %d",p->cof,p->exp);
            p=p->next;
        }
        printf("\n");
    }
    int main()
    {
        Lnode *L1,*L2;
        init(L1);
        init(L2);//初始化两个表达式
        Add(L1,L2);//相加,相加结果放在L2上
        display(L2);//打表
    }
    
    
    展开全文
  • 《数据结构课程设计—一元多项式加法、减法、乘法运算的实现》由会员分享,可在线阅读,更多相关《数据结构课程设计—一元多项式加法、减法、乘法运算的实现(20页珍藏版)》请在人人文库网上搜索。1、1.一元多项式...

    《数据结构课程设计—一元多项式加法、减法、乘法运算的实现》由会员分享,可在线阅读,更多相关《数据结构课程设计—一元多项式加法、减法、乘法运算的实现(20页珍藏版)》请在人人文库网上搜索。

    1、1.一元多项式加法、减法、乘法运算的实现1.1设计内容及要求1)设计内容(1)使用顺序存储结构实现多项式加、减、乘运算。例如:,求和结果:(2)使用链式存储结构实现多项式加、减、乘运算,求和结果:2)设计要求(1)用C语言编程实现上述实验内容中的结构定义和算法。(2)要有main()函数,并且在main()函数中使用检测数据调用上述算法。(3)用switch语句设计如下选择式菜单。*数据结构综合性实验*一、多项式的加法、减法、乘法运算* 1.多项式创建 * 2.多项式相加 * 3.多项式相减 * 4.多项式相乘 * 5.清空多项式 * 0.退出系统 * 请选择(05) *请选择(0-5):1.。

    2、2数据结构设计根据下面给出的存储结构定义:#define MAXSIZE 20 /定义线性表最大容量/定义多项式项数据类型typedef structfloat coef; /系数int expn; /指数 term,elemType;typedef structterm termsMAXSIZE; /线性表中数组元素int last; /指向线性表中最后一个元素位置 SeqList;typedef SeqList polynomial;1.3基本操作函数说明 polynomial*Init_Polynomial();/初始化空的多项式int PloynStatus(polynomial*p)。

    3、/判断多项式的状态 int Location_Element(polynomial*p,term x)在多项式p中查找与x项指数相同的项是否存在int Insert_ElementByOrder(polynomial*p,term x)/在多项式p中插入一个指数项xint CreatePolyn(polynomial*P,int m)/输入m项系数和指数,建立表示一元多项式的有序表pchar compare(term term1,term term2)/比较指数项term1和指数项term2polynomial*addPloyn(polynomial*p1,polynomial*p2)/将多项。

    4、式p1和多项式p2相加,生成一个新的多项式polynomial*subStractPloyn(polynomial*p1,polynomial*p2)/多项式p1和多项式p2相减,生成一个新的多项式polynomial*mulitPloyn(polynomial*p1,polynomial*p2)/多项式p1和多项式p2相乘,生成一个新的多项式void printPloyn(polynomial*p)/输出在顺序存储结构的多项式p1.4程序源代码#include#include#include#define NULL 0#define MAXSIZE 20typedef structfloat。

    5、 coef;int expn;term,elemType;typedef structterm termsMAXSIZE;int last;SeqList;typedef SeqList polynomial;void printPloyn(polynomial*p);int PloynStatus(polynomial*p)if(p=NULL)return -1;else if(p-last=-1)return 0;elsereturn 1;polynomial*Init_Polynomial()polynomial*P;P=new polynomial;if(P!=NULL)P-last=。

    6、-1;return P;elsereturn NULL;void Reset_Polynomial(polynomial*p)if(PloynStatus(p)=1)p-last=-1;int Location_Element(polynomial*p,term x)int i=0;if(PloynStatus(p)=-1)return 0;while(ilast & p-termsi.expn!=x.expn)i+;if(ip-last)return 0;elsereturn 1;int Insert_ElementByOrder(polynomial*p,term x)int j;if(P。

    7、loynStatus(p)=-1)return 0;if(p-last=MAXSIZE-1)coutlast;while(p-termsj.expn=0)p-termsj+1=p-termsj;j-;p-termsj+1=x;p-last+;return 1;int CreatePolyn(polynomial*P,int m)float coef;int expn;term x;if(PloynStatus(P)=-1)return 0;if(mMAXSIZE)printf(顺序表溢出n);return 0;elseprintf(请依次输入%d对系数和指数.n,m);for(int i=0;。

    8、iterm2.expn)return;else if(term1.expnlast & jlast)switch(compare(p1-termsi,p2-termsj)case:p3-termsk+=p1-termsi+;p3-last+;break;casetermsk+=p2-termsj+;p3-last+;break;case=:if(p1-termsi.coef+p2-termsj.coef!=0)p3-termsk.coef=p1-termsi.coef+p2-termsj.coef;p3-termsk.expn=p1-termsi.expn;k+;p3-last+;i+;j+;。

    9、while(ilast)p3-termsk+=p1-termsi+;p3-last+;return p3;polynomial*subStractPloyn(polynomial*p1,polynomial*p2)int i;i=0;if(PloynStatus(p1)!=1)|(PloynStatus(p2)!=1)return NULL;polynomial*p3=Init_Polynomial();p3-last=p2-last;for(i=0;ilast;i+)p3-termsi.coef=-p2-termsi.coef;p3-termsi.expn=p2-termsi.expn;p3。

    10、=addPloyn(p1,p3);return p3;polynomial*mulitPloyn(polynomial*p1,polynomial*p2)int i;int j;int k;i=0;if(PloynStatus(p1)!=1)|(PloynStatus(p2)!=1)return NULL;polynomial*p3=Init_Polynomial();polynomial*p=new polynomial*p2-last+1;for(i=0;ilast;i+)for(k=0;klast;k+)pk=Init_Polynomial();pk-last=p1-last;for(j。

    11、=0;jlast;j+)pk-termsj.coef=p1-termsj.coef*p2-termsk.coef;pk-termsj.expn=p1-termsj.expn+p2-termsk.expn;p3=addPloyn(p3,pk);return p3;void printPloyn(polynomial*p)int i;for(i=0;ilast;i+)if(p-termsi.coef0 & i0)couttermsi.coef;elsecouttermsi.coef;couttermsi.expn;coutsel;switch(sel)case 1:p1=Init_Polynomi。

    12、al();p2=Init_Polynomial();int m;printf(请输入第一个多项式的项数:n);scanf(%d,&m);CreatePolyn(p1,m);printf(第一个多项式的表达式为p1=);printPloyn(p1);printf(请输入第二个多项式的项数:n);scanf(%d,&m);CreatePolyn(p2,m);printf(第二个多项式的表达式为p2=);printPloyn(p2);break;case 2:printf(p1+p2=);if(p3=subStractPloyn(p1,p2)!=NULL)printPloyn(p3);break;c。

    13、ase 3:printf(np1-p2=);if(p3=subStractPloyn(p1,p2)!=NULL)printPloyn(p3);break;case 4:printf(np1*p2=);if(p3=mulitPloyn(p1,p2)!=NULL)printPloyn(p3);case 5:Reset_Polynomial(p1);Reset_Polynomial(p2);Reset_Polynomial(p3);break;case 0:return;return;1.5程序执行结果2.迷宫问题实现2.1设计内容及要求1)设计内容以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中。

    14、的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的道路,或得出没有通路的结论。2)设计要求(1)用C语言编程实现上述实验内容中的结构定义和算法;(2)要有main()函数,并且在main()函数中使用检测数据调用上述算法;2.2数据结构设计根据以上问题给出存储结构定义:typedef struct /定义坐标int x;int y;item;/定义坐标和方向typedef structint x;int y;int d;dataType;/定义顺序栈的类型定义typedef structdataType dataMAXLEN;int top;SeqStack;item mov。

    15、e8; /8邻域试探方向数组int mazeM+2N+2=1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,; /定义迷宫数组,0表示有路径,1表示不存在路径2.3基本操作函数说明void print_Path(SeqStack*s);/输出迷宫路线SeqStack*InitSeqStack()/该函数初始化一个空栈,并返回指向。

    16、该栈的存储单元首地址int Push(SeqStack*s,dataType x)/将元素x入栈s,若入栈成功返回结果1;否则返回0int StackEmpty(SeqStack*s)/该函数判断栈是否为空,若栈空返回结果1;否则返回0int Pop(SeqStack*s,dataType*x)/将栈顶元素出栈,放入x所指向的存储单元中,若出栈返回结果1;否则返回0void init_move(item move8)/初始化8邻域方向int find_Path(int mazeM+2N+2,item move8)/在迷宫maze二维数组中按move的8邻域方向探测迷宫路线,存在返回1,否则返回。

    17、0void print_Path(SeqStack*s)/输出栈s中所有迷宫路径2.4程序源代码#include#include#define M 6#define N 8#define MAXLEN 100typedef structint x;int y;item;typedef structint x;int y;int d;dataType;typedef structdataType dataMAXLEN;int top;SeqStack;item move8;int mazeM+2N+2=1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,0,1。

    18、,0,1,1,1,1,1,1,0,1,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,;void print_Path(SeqStack*s);SeqStack*InitSeqStack()SeqStack*s;s=new SeqStack;s-top=-1;return s;int Push(SeqStack*s,dataType x)if(s-top=MAXLEN-1)return 0;elses-top+;s-datas-top=x;return 1。

    19、;int StackEmpty(SeqStack*s)if(s-top=-1)return 1;elsereturn 0;int Pop(SeqStack*s,dataType*x)if(StackEmpty(s)return 0;else*x=s-datas-top;s-top-;return 1;void init_move(item move8)move0.x=0;move0.y=1;move1.x=1;move1.y=1;move2.x=1;move2.y=0;move3.x=1;move3.y=-1;move4.x=0;move4.y=-1;move5.x=-1;move5.y=-1。

    20、;move6.x=-1;move6.y=0;move7.x=-1;move7.y=1;void printS(dataType temp)int static i=0;printf(第%d次入栈元素为:,+i);printf(%d,%d)%dn,temp.x,temp.y,temp.d);int find_Path(int mazeM+2N+2,item move8)SeqStack*s=InitSeqStack();dataType temp;int x,y,d,i,j;temp.x=1;temp.y=1;temp.d=-1;Push(s,temp);while(!StackEmpty(s)。

    21、Pop(s,&temp);x=temp.x;y=temp.y;d=temp.d+1;while(dtop;i+)printf(%d,%d)%d-,s-datai.x,s-datai.y,s-datai.d);printf(%d,%d)%dn,s-datai.x,s-datai.y,s-datai.d);void main()init_move(move);if(!find_Path(maze,move)printf(迷宫路径不存在);2.5程序执行结果总 结通过这本次课程设计,加深了我对数据结构这门课程知识的理解,使我更熟练掌握实践技巧。我通过这一周的时间在选题,编译调试,查阅相关文献资料,认。

    22、真思考,敢于实践操作,攻克了一个个错误,完成了此次课程设计。在“一元多项式的加、减、乘法运算实现”中主要使用了线性表的基本操作,使我更进一步理解线性表的顺序存储和链式存储结构,熟练线性表的插入、删除等基本功能;“迷宫问题的实现”又是栈的典型实际应用,在编译调试此程序更突出了栈的特性。通过实际应用的程序编译来巩固自己数据结构的相关知识,更能加深记忆。这次课程设计,对我的程序设计和调试能力有很大的提升。这次课程设计使我深刻认识到自己专业知识的匮乏,程序设计的能力的不足。通过这次的课程设计也提高了我的独立思考、敢于实践操作能力,弥补了我的部分专业知识的不足之处。我的程序设计思想和代码的编写和调试能力在此次课设期间有所提高。这样一种更贴切实际的课程设计,更能提高我的学习效率,让我真正理解这门课程的知识要点。最后,非常感谢雷老师在平时以及在本次课设中给予我们的耐心的教导与帮助。参考文献【1】数据结构(C语言版) 主编:严蔚敏 吴伟民【2】C程序设计 主编:谭浩强【3】数据结构(C语言版)例题详解与课程设计指导 主编:秦锋 袁志祥【4】二级C语言程序设计 主编:刘文辉。

    展开全文
  • 思路: 多项式结点类描述:(Node结点,Linklist类的描述在创建单链表的文章已经实现)public class PolynNode {public double coef; //系数public int expn; //指数public PolynNode(double coef,int expn){ //构造...
  • C语言链表应用:一元多项式加法运算 首先科普一下线性表的相关知识。线性表,即由n个性质相同的数据元素组成的有序序列。线性表是最基础的线性结构,也是最基本的数据结构形式。因此学好线性表,也是学习其余数据...
  • C语言实现一元多项式加法运算(链表)

    千次阅读 多人点赞 2019-10-05 21:26:25
    C语言实现一元多项式加法运算(链表) 完成如下操作: ①输入并建立一元稀疏多项式;(输入格式自定) 例如:4 - 12x3 + 123x5 - 80x10 ②输出所建立的一元多项式;(输出格式自定) 例如:12 - 3x + x3 + 230x12 ③...
  • 一元多项式加法

    2017-04-02 17:30:03
    我们经常遇到两多项式相加的情况,在这里,我们就需要用程序来模拟实现把两个多项式相加到一起。首先,我们会有两个多项式,每个多项式是独立的一行,每个多项式由系数、幂数这样的多个整数对来表示。 如多项式2x20-...
  • 算法:一元多项式加法

    千次阅读 2020-06-14 22:24:55
    让我们重温小学初中时那些一元多项式加法吧,不同的是现在使用计算机来帮我们计算了。多年前不想写作业的梦想终于快要实现了!下面就给出书上的算法。 输入 输入数据包含多组测试数据,每组数据包含两行一元...
  • 编程实现一元多项式加法运算。(要求用链表实现) 输入 第一行为一元多项式A, 以 0,0 作为输入结束; 第二行为一元多项式B, 以 0,0 作为输入结束。 输出 多项式A和多项式B的和。 样例输入 5,3 7,8 9,15 0,0 2,0 ...
  • 链表的应用之一:一元多项式运算,这里先说明一元多项式加法,减法类同 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201118203932761.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,...
  • 多项式加法实现原理: (1)如果cpa的指数<cpb的指数,则将cpa所指向的插入和多项式链中,向后移动指针; (2)如果cpa的指数>cpb的指数,则将cpb所指向的插入和多项式链中,向后移动指针; (3)如果cpa的...
  • 一元多项式基于链表结构的加法减法实现
  • 一元多项式加法运算的实现 swustoj

    千次阅读 2018-04-20 19:36:25
    一元多项式加法运算的实现 10000(ms) 10000(kb) 2093 / 5095编程实现一元多项式的加法运算。(要求用链表实现)输入第一个一元多项式A; 第二个一元多项式B。 以(0,0)作为输入结束。输出多项式A和多项式B的...
  • 数据结构-一元多项式加法

    千次阅读 2018-12-03 19:12:32
    7-17 一元多项式加法 (20 分) 设计程序求两个一元多项式的和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数。数字间以空格分隔。 输出格式: ...
  • 一元多项式加法

    2012-08-10 09:32:40
    一元多项式加法器课程设计,数据结构课程设计
  • 一元多项式加法运算的实现

    千次阅读 2018-04-13 12:26:15
    编程实现一元多项式加法运算。(要求用链表实现)输入第一个一元多项式A; 第二个一元多项式B。 以(0,0)作为输入结束。输出多项式A和多项式B的和。样例输入5,3 7,8 9,15 0,0 2,0 6,3 -7,8 0,0样例输出2x^0+11x^...
  • C语言链表的入门题,里面提供了两种思路供参考,用链表来实现一元多项式的加减法,并按照一定规律输出。也是练习链表和排序算法的一道小实验,初学链表的小伙伴可以参考参考噢
  • C语言实现单链表方式的一元多项式加法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,495
精华内容 1,398
关键字:

一元多项式加法

友情链接: dijkstra.rar