Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3350316
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: C/C++

2006-04-06 16:07:11

两个非递减有序线性表LA, LB.
现要求装两个线性表进行归并形成线性表LC,且LC依然保持非递减顺序
 
#include
#include
#include
//表达一
int mergelist1( const char* lap, const char *lbp,char *lc)
{
 if(lap == NULL || lbp == NULL)
  return -1;
 
 while( *lap != 0 && *lbp != 0)
 {
  if(*lap <= *lbp)
  {
   *lc++ = *lap++;
  }
  else
  {
   *lc++ = *lbp++;
  }
 }
 
 while(*lap) *lc++ = *lap++;
 while(*lbp) *lc++ = *lbp++;
 return 0;
}
 
//表达二
int mergelist( const char *lap, const char *lbp, char *lc)
{

 int i,j; //identify current position of la and lb

 if(lap == NULL || lbp == NULL)
  return -1;

 for(i=0, j=0; lap[i] !=0 && lbp[j]!=0;)
 {
  if(lap[i] <= lbp[j])
  {
   *lc++ = lap[i];
   ++i;
  }
  else
  {
   *lc++ = lbp[j];
   ++j;
  }
 }

 //process the remain part
 while(lap[i]) *lc++ = lap[i++];
 while(lbp[j]) *lc++ = lbp[j++];

 return 0;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
 char *la = "abcdefg";
 char *lb = "abcdefgsdfasfsdfsa";
 char *lc;
 size_t len;
 len = strlen(la) + strlen(lb) + 1;
 lc = (char *)malloc(len +1);
 if(lc == NULL)
  return -1;
 memset(lc, 0, len+1);
 if(mergelist(la, lb, lc))
 {
  printf("\n\t\t failure! \n");
  return -1;
 }
 printf("%s", lc);
 getchar();
 free(lc);
 return 0;
}
阅读(999) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~