C语言--生成单链表并归并

在天勤数据结构中的归并单链表中,merge中的参数列表使用了&,而&只能在C++中使用。
C中使用会报错[Error] expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
代码:

#include "stdio.h"
#include <stdlib.h>

#define N 5
//建立结构体 
typedef struct LNode {
	int data;
	struct LNode *next;
} LNode;

//归并 
LNode* merge(LNode *A,LNode *B) {
	LNode *C;
	LNode *p = A->next;
	LNode *q = B->next;
	LNode *r;
	C=A;
	C->next = NULL;
	//释放
	free(B);
	r=C;
	//循环
	while(p!=NULL && q!=NULL) {
		//比较大小
		if(p->data > q->data) {
			r->next = q;
			r = r->next;
			q=q->next;
		} else {
			
			r->next = p;
			r = r->next;
			p=p->next;
		}
	}
	if(p!=NULL) r->next = p;
	if(q!=NULL) r->next = q;
	return C;
}
//创建单链表 
LNode* cLNode(LNode *C,int a[],int n) {
	LNode *r,*s;
	int i;
	C = (LNode*)malloc(sizeof(LNode));
	C->next = NULL;
	r = C;
	for(i = 0; i < N; ++i) {
		s= (LNode*)malloc(sizeof(LNode));
		s->data = a[i];
		s->next = NULL;
		r->next = s;
		r = r->next;
	}
	r->next = NULL;
	return C;
}
//输出单链表 
void printLNode(LNode *A,int n) {
	int i;
	LNode *r;
	r = A->next;
	for(i = 0; i < n; ++i) {
		printf("%d",r->data);
		r = r->next;
	}
	printf("\n");
}

int main() {
//初始化 
	int i;
	LNode *A,*B,*C;
	LNode* merge(LNode *A,LNode *B);
	LNode* cLNode(LNode *C,int a[],int n);
	void printLNode(LNode *A,int n);
//	给定数组 
	int a[N] = {1,2,2,5,8};
	int b[N] = {0,1,2,5,6};
//	创建单链表A,B 
	A = cLNode(A,a,N);
	B = cLNode(B,b,N);
//	归并 
	C = merge(A,B);
//	输出 
	printLNode(C,N*2);
	return 0;
}



已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页