⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 polynomial.c

📁 自己做的常用库和实现的数据结构。public domain.
💻 C
字号:
/* Demo of polynomial expression, using dynamic link data structure. * * Written by Cyril Hu (cyrilhu@gmail.com), public domain. */#include "my.h"typedef struct pn {	int coef;	int pow;	struct pn *next;} PN;PN *initln(size_t n){	size_t i;	PN *t, *head, *p;	for(i=0; i<n; i++) {		p = mem('m', sizeof(PN));		do {			puts("Input coeffienct( coeffienct != 0 ) & power(one bye one, in descending order)");			scanf("%d%d", &p->coef, &p->pow);		} while(p->coef == 0);		i ? t->next = p : (head = p);		t = p;	}	p->next = NULL;	return head;}void pntln(PN *head){	int i;	printf("PolyNomial Expression = ");	while(head != NULL) {		printf("%d*", head->coef);		for(i=0; i < head->pow; i++) 			printf("x*");		printf("\b + ");		head = head->next;	}	printf("\b\b \n");}int compar(PN *p1, PN *p2){	return p1->pow - p2->pow;}void merge(PN *dst, PN **p2){	PN *t;	dst->coef += (*p2)->coef;	t = (*p2)->next;	free(*p2);	*p2 = t;}void cmpln(PN *head, PN *p2){	int cmp;	PN *p1;	if( !(p1 = head->next) || ! p2) {		head->next = p2;		return;	}	if( (cmp = compar(p1, p2)) == 0) {		merge(p1, &p2);		cmpln(head, p2);	} else if(cmp>0)		cmpln(p1, p2);	else {		head->next = p2;		cmpln(p2, p1);	}}PN *addln(PN *p1, PN *p2){	int cmp = compar(p1, p2);	PN *head = NULL;	if(! p1 && p2)		return p2;	if(p1 && ! p2)		return p1;	if(p1 && p2) {		if(cmp >= 0) {			if(cmp==0)				merge(p1, &p2);			cmpln(head=p1, p2);		} else 			cmpln(head=p2, p1);	}	return head;}int main(void){	size_t m,n;	PN *p1, *p2;	puts("How many nodes to create?");	scanf("%d", &m);	p1 = initln(m);	pntln(p1);	puts("How many nodes to create?");	scanf("%d", &n);	p2 = initln(n);	pntln(p2);	p1 = addln(p1, p2);	puts("\nAfter adding 2 polynomial expression together,");	pntln(p1);	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -