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

📄 link3.c

📁 自己做的常用库和实现的数据结构。public domain.
💻 C
字号:
/* Demo of merging 2 ascending/descending dynmaic link into 1, in same order. * * Written by Cyril Hu (cyrilhu@gmail.com), public domain. */#include<time.h>#include<stdlib.h>#include<stdio.h>typedef struct l {	int sn;	struct l *next;} L;L *ssort(L *head){	int tt;	L *p, *t, *q;	for(p=head; p; p = p->next) {		for(t=p, q = p->next; q; q = q->next)			if(t->sn > q->sn)				t = q;		tt = p->sn; p->sn = t->sn; t->sn = tt;	}	return head;}L *initlink(int n){	int i;	L a, *p;	for(p = &a, i=0; i<n; i++) {		if((p->next = malloc(sizeof(L))) == NULL) {			fprintf(stderr, "Fatal: mem alloc fail !");			exit(EXIT_FAILURE);		}		p = p->next;		p->sn =(int)( (double)(n+50) * rand()/(RAND_MAX + 1.0) );	}	p->next = NULL;	return ssort(a.next);}void pntlink(L *head){	L *p;	for(p=head; p; p = p->next)		printf("%2d ", p->sn);	if(head)		puts("");}L *mergelink(L *a, L *b){	L *c = NULL, *head = NULL;		if(a && b) {		if(a->sn < b->sn)			c = head = a,  a = a->next;		else			c = head = b,  b = b->next;	}	while(a && b) 		if(a->sn < b->sn)			c = c->next = a, a = a->next;		else			c = c->next = b, b = b->next;	if(c)		c->next = b ? b : a;	return head;}int main(void){	L *a, *b, *c;	srand(time(NULL));	a = initlink(5);		pntlink(a);	b = initlink(20);		pntlink(b);	c = mergelink(a,b);	pntlink(c);	return EXIT_SUCCESS;}

⌨️ 快捷键说明

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