免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1444 | 回复: 5
打印 上一主题 下一主题

新手问题...HELP... [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-25 21:31 |只看该作者 |倒序浏览
#include <stdio.h>
#include <stdlib.h>
#define list_init_size 100                       //初始化空间大小。。。
typedef struct
{
int * elem ;                                     //存储线性表的基地址。。。。
int length;                                      //线性表元素的个数。。。。
int listsize ;                                   //初始化空间大小。。。
}  sqlist ;

int listinit(sqlist *a,sqlist *b)                 //新键 a表。。。。和。。。。b表。。。。                                 
{
a->elem=(int *)malloc(list_init_size*sizeof(int )) ;      //对a表进行开空间。,,,
if(a->elem==NULL)                                         //判断。。。。如果没有开成功。。就。。。。
return 0 ;
a->length=NULL;                                          //使表长为 0
a->listsize=list_init_size;                              //分配初始化大小。。。。


b->elem=(int *)malloc(list_init_size*sizeof(int ));     //对b表进行开空间。,,,      
if(b->elem==NULL)                                        //判断。。。。如果没有开成功。。就。。。。
return 0 ;
b->length=NULL;                                           //使表长为 0
b->listsize=list_init_size;                                 //分配初始化大小。。。。

return 1 ;

}

int mergelist(sqlist *a,sqlist *b,sqlist *c)                //  ...对a....b,,,,2个线性表进行合并。。。。
{
c->elem=(int *)malloc(list_init_size*sizeof(int )) ;           //对c线性开空间。。。。。   
if(c->elem==NULL)                                              //判断。。。。如果没有开成功。。就。。。。
return 0 ;
c->length=a->length+b->length;             //c空间的元素个数的长度等于。。a空间的元素个数的长度+b空间的元素个数的长度。。。
c->listsize=a->listsize+b->listsize;                          //c空间的长度等于。。a空间的长度+b空间的长度。。。                              

int *la,*lb;                                //定义 la,lb  两个指针。用于找到,,a表和b表的末位置。。
int i;



la=a->elem+a->length-1;                     // a 表的末位置给la...         
lb=b->elem+b->length-1;                      //b表的末位置给lb..
while(a->elem<=la  &&  b->elem<=lb)        //进行2个表的合并。。。。
if(a->elem<=b->elem)                       //如果a表元素小于b表的元素。。。就把a表的一个元素放到c表中。。
{
*(c->elem++)=*(a->elem++);
}
else
{*(c->elem++)=*(b->elem++);



}
while(a->elem <= la)                       //把没有放完的继续放进去。。。
*(c->elem++)=*(a->elem++);

while(b->elem<=lb)
*(c->elem++)=*(b->elem++);
return 1;


}

main()
{
sqlist l,m,n;               
int i,j,k;
listinit(&l,&m);
for(i=0;i<10;i++)                 //输入10个元素放入a表。。。
{
scanf("%d",&l.elem[i]);
l.length++;                         //每循环一次。。。长度加1。。。

}
for(j=0;j<10;j++)                      //输入10个元素放入b表。。。
{
scanf("%d",&m.elem[j]);
m.length++;                       //每循环一次。。。长度加1。。。

}

mergelist(&l,&m,&n);
for(k=0;k<=n.length-1;k++)       //输出合并的的元素。。         
printf("%d",n.elem[k]);
return 1;


}


  编译没有错哦。。。算法错了。。帮忙哦。。。。!!~~

  两个线性表的合并。。。

论坛徽章:
0
2 [报告]
发表于 2007-03-26 09:07 |只看该作者
链表的插入是这样实现的么?看来楼主还没有理解链表,建议好好看看书.

论坛徽章:
0
3 [报告]
发表于 2007-03-26 21:04 |只看该作者
........不是链表...是线性表....!~~~~~

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2007-03-26 22:33 |只看该作者
原帖由 m582445672 于 2007-3-26 21:04 发表
........不是链表...是线性表....!~~~~~


不管是什么表, 还是看书吧.

另外, 如果真的想通过论坛解决问题, 那就先把帖子的标题和内容都好好整理一下.

论坛徽章:
0
5 [报告]
发表于 2007-03-26 22:43 |只看该作者
while(a->elem<=la  &&  b->elem<=lb)        //进行2个表的合并。。。。
if(a->elem<=b->elem)                       //如果a表元素小于b表的元素。。。就把a表的一个元素放到c表中。。
{
*(c->elem++)=*(a->elem++);
}
else
{*(c->elem++)=*(b->elem++);



}
while(a->elem <= la)                       //把没有放完的继续放进去。。。
*(c->elem++)=*(a->elem++);

while(b->elem<=lb)
*(c->elem++)=*(b->elem++);
return 1;


这个区域出错了。

论坛徽章:
0
6 [报告]
发表于 2007-03-26 22:52 |只看该作者
........楼上的多谢...解决了..
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP