将两个有序线性表合并成一个有序线性表

jshshlovesyx 2010-05-07 09:40:52
大家好,我的基础不是很好,希望大家多多帮助,谢谢各位,希望大家帮我解答这两个问题呗~~~~
1.将两个有序线性表合并成一个有序线性表。
2.在一个有序线性表中插入一个元素后仍然是有序线性表。
希望大家用C语言帮我解决,谢谢~~~~~
...全文
2869 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenshko 2010-05-07
  • 打赏
  • 举报
回复
大学时候的作业嘛!
白云飘飘飘 2010-05-07
  • 打赏
  • 举报
回复
int main()
{
int arr[5]={1,4,8,9};
int i=0,n=4;
int val=5;
while(arr[i]<val&&i<4) i++;
while(n>i) arr[n]=arr[n-1],n--;
arr[i]=val;
return 0;
}
qq675927952 2010-05-07
  • 打赏
  • 举报
回复
数据结构书有吧。。。你自己上网搜一下 ,也应该有
白云飘飘飘 2010-05-07
  • 打赏
  • 举报
回复
int main()
{
int arr1[4]={1,4,8,9};
int arr2[5]={2,4,8,12,45};
int arr3[9];
int i=0,j=0,m=0;
while(i<4&&j<5)
{
if (arr1[i]<arr2[j])
arr3[m]=arr1[i],i++,m++;
else
arr3[m]=arr2[j],j++,m++;
}
while(i<4) arr3[m]=arr1[i],i++,m++;
while(j<5) arr3[m]=arr2[j],j++,m++;
return 0;
}
向立天 2010-05-07
  • 打赏
  • 举报
回复
呃......
不知如何下手
  • 打赏
  • 举报
回复
删前留名。。
yangguang0907 2010-05-07
  • 打赏
  • 举报
回复
2.在一个有序线性表中插入一个元素后仍然是有序线性表。
#include<stdio.h>
#include<malloc.h>


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; i<count; i++)
{
q = (Node*)malloc(sizeof(Node));
printf("请输入节点数据:");
scanf("%d",&(q->data));
p->next = q;
p = q;
p ->next =NULL;

}

}

void Insert(Node **root,int data)
{
Node *p,*q,*temp;
q = (Node*)malloc(sizeof(Node));
q ->data = data;
q ->next = NULL;
p = *root;
while( p != NULL)
{
temp = p;
p = p ->next;
if(data < p ->data)
{
temp ->next = q;
q ->next = p;
return ;
}
else
if(p ->next == NULL)
{
p ->next = q;
p = q ->next;
}
}

p = q;
return ;


}

int main()
{
Node *root,*p,*q;
int data;
root = (Node*)malloc(sizeof(Node));
Create(&root);

printf("Input insert data:");
scanf("%d",&data);
Insert(&root, data);

for(p = root ->next; p != NULL; p = p ->next)
printf("%d",p ->data);

for(p = root; p != NULL; )
{
q = p;
p = p ->next;
free(q);
}
return 0;
}
yangguang0907 2010-05-07
  • 打赏
  • 举报
回复
1.将两个有序线性表合并成一个有序线性表。
#include<stdio.h>
#include<malloc.h>


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; i<count; i++)
{
q = (Node*)malloc(sizeof(Node));
printf("请输入节点数据:");
scanf("%d",&(q->data));
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);
Create(&root2);
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;
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧