合併兩個單鏈表練習,多項式合併

用節點node表示多項式的係數和次數,編程合併兩個鏈式表達的多項式。


思路:先初始化兩個單鏈表,然後將單鏈表的係數相加,如果一個單鏈表結束,將next節點直接指向不空的單鏈表,最後輸出結果。


// multinomial.cpp : 定義控制檯應用程序的入口點。
//

#include "stdafx.h"
#include <malloc.h>
#include <Windows.h>



typedef struct Node
{
	int iXishu;
	int iCishu;
	struct Node *next;
}muti,*pmuti;

pmuti injoin(pmuti phead1,pmuti phead2)
{
	pmuti phead3 = (Node*)malloc(sizeof(Node));
	pmuti p1 = (Node*)malloc(sizeof(Node));
	pmuti p2 = (Node*)malloc(sizeof(Node));
	pmuti prear = (Node*)malloc(sizeof(Node));

	p1 = phead1->next;
	p2 = phead2->next;
	phead3 = prear ;
	while(true)
	{
		if(p1 == NULL || p2 == NULL)
		{
			break;
		}
		pmuti pNow = (Node*)malloc(sizeof(Node));

		pNow->iXishu = p1->iXishu + p2->iXishu;
		pNow->iCishu = p1->iCishu;

		p1 = p1->next;
		p2 = p2->next;
		prear->next =pNow;
		prear = pNow;
	}
	prear->next = NULL;
	if (p1 != NULL)
	{
		prear->next = p1;
	}
	else if (p2 != NULL)
	{
		prear->next = p2;
	}
	return phead3;
}

int _tmain(int argc, _TCHAR* argv[])
{
	muti *phead1=(Node*)malloc(sizeof(Node));
	muti *phead2=(Node*)malloc(sizeof(Node));
	muti *prear=(Node*)malloc(sizeof(Node));
	muti *pNew=(Node*)malloc(sizeof(Node));
	int i  = 0,j=0,iMax;
	prear = phead1 ;
	printf("第一個鏈表,輸入最大次數\n");
	scanf("%d",&iMax);
	
	for(i;i<iMax+1;i++)
	{
		printf("x^%d項前的係數",i);
		scanf("%d",&j);
		pNew=(Node*)malloc(sizeof(Node));
		pNew->iXishu = j;
		pNew->iCishu = i;
		pNew->next = NULL;
		prear->next = pNew;
		prear = pNew;
	}
	prear = phead2 ;
	printf("第二個鏈表,輸入最大次數\n");
	scanf("%d",&iMax);
	i = 0;
	for(i;i<iMax+1;i++)
	{
		printf("x^%d項前的係數",i);
		scanf("%d",&j);
		pNew=(Node*)malloc(sizeof(Node));
		pNew->iXishu = j;
		pNew->iCishu = i;
		pNew->next = NULL;
		prear->next = pNew;
		prear = pNew;
	}
	pmuti phead3 = injoin(phead1,phead2);
	pmuti prear3 = (Node*)malloc(sizeof(Node));
	i=0;
	prear3 = phead3->next;
	while(prear3 != NULL)
	{
		//prear3 = phead3->next;
		printf("合併後的x^%d項前的係數%d\n",i,prear3->iXishu);
		prear3 = prear3->next;
		i++;
	}
	system("pause");
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章