已知顺序表la和lb中的元素依值非递减有序排列,现将la和lb归并到新的顺序表lc中,中元素也依值非递减有序
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/22 18:22:38
已知顺序表la和lb中的元素依值非递减有序排列,现将la和lb归并到新的顺序表lc中,中元素也依值非递减有序
排列.例如 la=(3,6,9,11) lb=(4,6,8,11,13,17,20) 则lc=(3,4,6,6,8,9,11,11,13,17,20)我不要算法,要从开头到最后的完整的程序,包括怎么定义.建表等等.有好的会有追加
另外请大概解释一下每一步的的意思,加点注释
排列.例如 la=(3,6,9,11) lb=(4,6,8,11,13,17,20) 则lc=(3,4,6,6,8,9,11,11,13,17,20)我不要算法,要从开头到最后的完整的程序,包括怎么定义.建表等等.有好的会有追加
另外请大概解释一下每一步的的意思,加点注释
#include
#include
/*声明库函数*/
struct Node
{
int data;
Node *next;
};/*定义结点结构*/
void Create(Node **root) /*生成单链表*/
{
Node *p,*q;
int count;
if( NULL == *root)
return;
p = *root;
printf("请输入节点的个数:");
scanf("%d",&count);
for(int i = 0; idata));
p->next = q;
p = q;
p ->next =NULL;
}
}
Node * Combine(Node *root1,Node *root2) /*合并两个单链表,并返回新单链表的表头指针*/
{
Node *root3 = (Node*)malloc(sizeof(Node));
Node *p1,*p2,*p3;
p1 = root1 ->next;
p2 = root2 ->next;
p3 = root3;
while(p1 != NULL&&p2 != NULL)
{
if(p1 ->data < p2 ->data)
{
p3 ->next = p1;
p3 = p3 ->next;
p1 = p1 ->next;
}
else
{
p3 ->next = p2;
p3 = p3 ->next;
p2 = p2 ->next;
}
}
while(p1 == NULL && p2 != NULL)
{
p3 ->next = p2;
p3 = p3 ->next;
p2 = p2 ->next;
}
while(p2 == NULL && p1 != NULL)
{
p3 ->next = p1;
p3 = p3 ->next;
p1 = p1 ->next;
}
return root3;
}
/*下面为主方法*/
int main()
{
Node *root1,*root2,*Combine_Root;
Node *p,*q;
root1 = (Node*)malloc(sizeof(Node));
root2 = (Node*)malloc(sizeof(Node));
Create(&root1); /*生成单链表1*/
Create(&root2);/*生成单链表2*/
Combine_Root = Combine(root1,root2); /*合并单链表*/
for(p = Combine_Root ->next; p != NULL; p = p ->next)
printf("%d",p ->data);
free(root1);
free(root2);
for(p = Combine_Root; p != NULL; )
{
q = p;
p = p ->next;
free(q);
}
return 0;
}
#include
/*声明库函数*/
struct Node
{
int data;
Node *next;
};/*定义结点结构*/
void Create(Node **root) /*生成单链表*/
{
Node *p,*q;
int count;
if( NULL == *root)
return;
p = *root;
printf("请输入节点的个数:");
scanf("%d",&count);
for(int i = 0; idata));
p->next = q;
p = q;
p ->next =NULL;
}
}
Node * Combine(Node *root1,Node *root2) /*合并两个单链表,并返回新单链表的表头指针*/
{
Node *root3 = (Node*)malloc(sizeof(Node));
Node *p1,*p2,*p3;
p1 = root1 ->next;
p2 = root2 ->next;
p3 = root3;
while(p1 != NULL&&p2 != NULL)
{
if(p1 ->data < p2 ->data)
{
p3 ->next = p1;
p3 = p3 ->next;
p1 = p1 ->next;
}
else
{
p3 ->next = p2;
p3 = p3 ->next;
p2 = p2 ->next;
}
}
while(p1 == NULL && p2 != NULL)
{
p3 ->next = p2;
p3 = p3 ->next;
p2 = p2 ->next;
}
while(p2 == NULL && p1 != NULL)
{
p3 ->next = p1;
p3 = p3 ->next;
p1 = p1 ->next;
}
return root3;
}
/*下面为主方法*/
int main()
{
Node *root1,*root2,*Combine_Root;
Node *p,*q;
root1 = (Node*)malloc(sizeof(Node));
root2 = (Node*)malloc(sizeof(Node));
Create(&root1); /*生成单链表1*/
Create(&root2);/*生成单链表2*/
Combine_Root = Combine(root1,root2); /*合并单链表*/
for(p = Combine_Root ->next; p != NULL; p = p ->next)
printf("%d",p ->data);
free(root1);
free(root2);
for(p = Combine_Root; p != NULL; )
{
q = p;
p = p ->next;
free(q);
}
return 0;
}
请用C语言编程实现 1.已知线性表LA和LB中的数据元素按值非递增有序排列,现要求将LA和LB归并为一个新
定义一个新的顺序表lc,其长度是两个顺序表la和lb的长度之和,设置3个指针la与lb,指针指向内容进行比较,小的放入l
用c++实现,假设有两个元素递增的有序排列线性表A和B,均以顺序表作存储结构.试编写算法将A表和B表归并成一个按元素值递
已知一个数组中的元素按元素值非递减有序排列,编写一个函数删除数组中多余的值相同的元素
数据结构问题:已知向量A中的n个元素按值非递减有序排列,试编一个算法,在此向量中插入一个值为x的新元素
已知三角形内角LA LB LC 2LC=LA+LB,LA-LB=40°求LA LB LC 的度数
已知角ABC中,LA-LB=15度,LC二75度,求LB的度数
设顺序表va中的数据元素递增有序.试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性.
设顺序表VA中的数据元素递增有序.试写一算法.将X插到顺序表的适当位置上,以保持该表的有序性.
在四边形ABCD中,LD=60°,LB比LA大20°,LC是LA的2倍,求LA,LB,LC的大小.
已知三角形ABC中,LC=90,且SINa和COSb是方程KX^2-KX+1=0的两根,求K,LA,LB的值
麻烦你们帮我做一题,已知锐角三角形的三个内角LA>LB>LC.用a表示LA-LB,LB-LC以及 90’-LA中的最小者