C-数据结构-单向链表(示例)

多项式合并

poly.c

c 复制代码
#include<stdio.h>
#include<stdlib.h>


struct node_st
{
	int coef;
	int exp;
	struct node_st *next;//自引用结构的指针

};

struct node_st *poly_create(int a[][2],int n)
{
	int i;
	struct node_st *me;//me是头节点,最好不动
	struct node_st *newnode,*cur;
	me = malloc(sizeof(*me));
	if(me == NULL)
		return NULL;
	me->next = NULL;
	cur = me;
	
	for(i = 0 ; i < n; i++)
	{
		newnode = malloc(sizeof(*newnode));
		if(newnode == NULL)
			return NULL;
		newnode->coef = a[i][0];
		newnode->exp = a[i][1];
		newnode->next = NULL;
		
		cur->next = newnode;
		cur = newnode;
	}
	
	return me;	
}
void poly_show(struct node_st *me)
{
	struct node_st *cur;
	for(cur = me->next;cur !=NULL;cur->next)
	{
		printf("(%d %d)",cur->coef,cur->exp);
	}
	printf("\n");
}
void poly_union(struct node_st *p1,struct node_st *p2)
{
	struct node_st *p,*q,*r;
	p = p1->next;
	q = p2->next;
	r = p1;
	while(p && q)
	{
		if(p->exp < q->exp)
		{
			r->next = p;
			r = p;
			p = p->next;
		}
		else if(p->exp > q->exp)
			{
				r->next = q;
				r =q;
				q= q->next;
			}
			else
			{
				p->coef += q->coef;
				if(p->coef)
				{
					r->next = p; 
					r = p;
					//p = p->next;可省略
					//q = q->next;可省略
				}
				p = p->next;
				q = q->next;
			}
	}
	if(p =NULL)
		r->next=q;
	else
		r->next=p;

}

int main()
{
	int a[][2] = {{5,0},{2,1},{8,8},{3,16}};
	int b[][2] = {{6,1},{16,6},{-8,8}};

	struct node_st *p1,*p2;
	
	p1 = poly_create(a,4);
	if(p1 ==NULL)
		exit(1);
	p2 = poly_create(b,3);
	if(p2 ==NULL)
		exit(1);

	poly_show(p1);
	poly_show(p2);

	poly_union(p1,p2);
	poly_show(p1);



	exit(0);
}
相关推荐
pianmian11 小时前
python数据结构基础(7)
数据结构·算法
闲晨1 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
ChoSeitaku4 小时前
链表交集相关算法题|AB链表公共元素生成链表C|AB链表交集存放于A|连续子序列|相交链表求交点位置(C)
数据结构·考研·链表
偷心编程4 小时前
双向链表专题
数据结构
香菜大丸4 小时前
链表的归并排序
数据结构·算法·链表
jrrz08284 小时前
LeetCode 热题100(七)【链表】(1)
数据结构·c++·算法·leetcode·链表
@小博的博客4 小时前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习
南宫生5 小时前
贪心算法习题其四【力扣】【算法学习day.21】
学习·算法·leetcode·链表·贪心算法
DARLING Zero two♡6 小时前
关于我、重生到500年前凭借C语言改变世界科技vlog.16——万字详解指针概念及技巧
c语言·开发语言·科技
泉崎6 小时前
11.7比赛总结
数据结构·算法