用CC++语言建立两个带表头结点的有序线性单链表( La, Lb )的合并 *** 作并按原来的相反顺序生成新的逆序线性

用CC++语言建立两个带表头结点的有序线性单链表( La, Lb )的合并 *** 作并按原来的相反顺序生成新的逆序线性,第1张

#include<stdioh>

#include<stdlibh>

/线性表/

struct TLink {

int data;

struct TLink next;

};/end struct TLink/

/生成新元素/

struct TLink new_item(int number)

{

struct TLink r = 0;

r = (struct TLink )malloc(sizeof(struct TLink));

r->data = number;

r->next = 0;

return r;

}/end new_item/

/在线性表中查询数据/

struct TLink lookup(struct TLink root, int number)

{

struct TLink h = root;

while(h) {

if (h->data == number) return h;

h = h->next ;

}/end lookup/

return 0;

}

/在线性表中追加一个数据/

void append(struct TLink root, int number)

{

struct TLink r = 0, n = 0;

if (!root) return ;

/不记录重复元素/

if (lookup(root, number)) return;

/如果表为空则新建表/

r = root;

if (!r) {

root = new_item(number);

return ;

}/end if/

/为保证为有序线性表,如果数据比表头还小则作为表头/

if (number < r->data ) {

n = new_item(number);

n->next = r;

root = n;

return ;

}/end if/

/在有序线性表中查找位置插入元素/

while(r) {

n = r->next ;

/如果已经是表尾则直接追加/

if (!n) {

n = new_item(number);

r->next = n;

return ;

}/end if/

/在中央某处插入/

if (number < n->data ) {

r->next = new_item(number);

r->next->next = n;

return ;

}/end if/

r = n;

}/end while/

}/end append/

/打印有序线性表/

void print(struct TLink root)

{

struct TLink r = root;

printf("");

while(r) {

printf("%d ", r->data );

r = r->next ;

}/end while/

printf("\b\n");

}/end print/

/将有序线性表h1合并至有序线性表h0,并销毁线性表h1/

void merge(struct TLink h0, struct TLink h1)

{

struct TLink h = 0, k = 0;

if (!h0 || !h1) return ;

h = h1;

while(h) {

append(h0, h->data );

k = h;

h = h->next ;

free(k);

}/end h/

h1 = 0;

}

int main(void)

{

int i = 0; struct TLink x=0, y = 0;

int a[] = {8,4,3,9,5,1};

int b[] = {7,2,1,5,6,0};

printf("原数据为:\n数组A:");

for(i = 0; i < 6; i++) {

printf("%d ", a[i]);

append(&x, a[i]);

}/next/

printf("\b\n数组B:");

for(i = 0; i < 6; i++) {

printf("%d ", b[i]);

append(&y, b[i]);

}/next/

printf("\b\n转换为有序线性表\nA:");

print(x);

printf("B:");

print(y);

printf("AB合并后为:");

merge(&x, &y);

print(x);

return 0;

}

/以上是顺序线性表的合并程序,逆序只需将插入条件从小于改为大于即可。

合并结果如果要保留,把合并函数的lookup调用删除即可/

使用线性组合的方式。

在多元线性回归模型中,如果需要将两个变量合并为一个变量,可以考虑使用线性组合的方式,将这两个变量进行加权之后得到一个新的变量,作为回归模型的自变量。其中,加权系数的选择可以通过多种方式来确定。

线性组合方式需要根据实际情况来选择加权系数,不能随意选择或者由于加权系数的缺乏实际意义而造成模型意义的混淆。

void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc)

{

//已知单链线性表La和Lb的元素按非递减排列

//归并La和Lb得到新的单链线性表Lc,Lc的元素也按值非递减排列

AH=La;BH=Lb;CH=Lc;

pa=AH_next;pb=BH_next;

CH=pc=AH;//用La的头结点作为Lc的头结点

while(pa&&pb)

{

if(pa->data<=pb->data){

pc-<next=pa;pc=pa;pa=pa->next;

}

elsr {pc->next=pb;pc=pb;pb=pb->next;}

}

pc->next=papa:pb;//插入剩余段

free(BH);//释放Lb的头结点

}//MergeList_L

以上就是关于用C/C++语言建立两个带表头结点的有序线性单链表( La, Lb )的合并 *** 作并按原来的相反顺序生成新的逆序线性全部的内容,包括:用C/C++语言建立两个带表头结点的有序线性单链表( La, Lb )的合并 *** 作并按原来的相反顺序生成新的逆序线性、多元线性回归模型怎么合并n1n2、试写一个算法,将两个有序线性表合并成一个有序线性表。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10084336.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存