| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 631 人关注过本帖
标题:数据结构中的线性表
只看楼主 加入收藏
zzqqrr
Rank: 6Rank: 6
来 自:299294817
等 级:侠之大者
威 望:1
帖 子:155
专家分:408
注 册:2011-6-11
结帖率:83.33%
收藏
已结贴  问题点数:5 回复次数:5 
数据结构中的线性表
/*  HELLO.C -- Hello, world */

#include "stdio.h"
#include "conio.h"
 #define MAXSIZE 100
#include "malloc.h"
typedef struct
{
  int data[MAXSIZE];
  int last;
}SeqList;

SeqList * init_SeqList()
{
 SeqList *L;
 L=malloc(sizeof(SeqList));
 L->last=-1;
 return L;

}

void print_SeqList(SeqList *L)//输出结果
{
int i;
 if(L->last==-1)
 {
  printf("the table is null");
  exit(1);
 }
 for(i=0;i<=L->last;i++)
 {
  printf("%d",L->data[i]);
 }
 printf("\n");

}
void marge(SeqList A,SeqList B,SeqList *L)
{
int i,j,k;
i=0;j=0;k=0;
 while(i<=A.last&&j<=B.last)
  if(A.data[i]<B.data[j])
   L->data[k++]=A.data[i++];
  else
   L->data[k++]=B.data[j++];
  while(i<=A.last)
    L->data[k++]=A.data[i++];
  while(j<=B.last)
    L->data[k++]=B.data[j++];
    L->last= k-1;
}

main()
{
    SeqList *L;
    SeqList A[]={1,2,3,4,5};//表A
    SeqList B[]={10,5,8,7,9};  //表B
    L=init_SeqList();
    marge(A,B,L);//错误提示说   这句的A,B的类型不匹配在调用‘marge’时在main函数中
    print_SeqList(L);
    getch();
}
题目:有顺序表A和B,其元素父亲按由小到大的顺序排列,编一个算法将它们合并成一个顺序表L,且L的元素也是有序排列
搜索更多相关主题的帖子: 线性表 
2011-09-23 22:29
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
收藏
得分:4 
SeqList A[]={1,2,3,4,5};//表A
SeqList B[]={10,5,8,7,9};  //表B
有这样初始化的吗?
L=malloc(sizeof(SeqList));//L=(SeqList *)malloc(sizeof(SeqList));

程序代码:
#include<stdlib.h>
#include "stdio.h"

 #include "conio.h"

 #define MAXSIZE 100

 #include "malloc.h"

 typedef struct

 {
   int data[MAXSIZE];
   int last;

 }SeqList;

SeqList * init_SeqList()

 {

 SeqList *L;

 L=(SeqList *)malloc(sizeof(SeqList));

 L->last=-1;

 return L;

}

void print_SeqList(SeqList *L)//输出结果
 {

 int i;

 if(L->last==-1)

 {
   printf("the table is null");
   exit(1);

 }

 for(i=0;i<=L->last;i++)

 {
   printf("%d ",L->data[i]);

 }

 printf("\n");

}

 void marge(SeqList A,SeqList B,SeqList *L)

 {

 int i,j,k;

 i=0;j=0;k=0;

 while(i<=A.last&&j<=B.last)
   if(A.data[i]<B.data[j])
    L->data[k++]=A.data[i++];
   else
    L->data[k++]=B.data[j++];
   while(i<=A.last)
     L->data[k++]=A.data[i++];
   while(j<=B.last)
     L->data[k++]=B.data[j++];
     L->last= k-1;

 }

int main()

 {
     SeqList *L;
     SeqList A,B;
     for(int i=0;i<5;i++)
     {
         A.data[i]=2*i;
         B.data[i]=2*i+1;
     }
     A.last=4;
     B.last=4;
     L=init_SeqList();
     marge(A,B,L);//错误提示说   这句的A,B的类型不匹配在调用‘marge’时在main函数中
     print_SeqList(L);
     getch();
     return 0;

 }

 







[ 本帖最后由 czsbc 于 2011-9-25 23:59 编辑 ]
2011-09-25 23:57
zzqqrr
Rank: 6Rank: 6
来 自:299294817
等 级:侠之大者
威 望:1
帖 子:155
专家分:408
注 册:2011-6-11
收藏
得分:0 
为什么要
 A.last=4;
B.last=4;这两句啊
要是输入的数我个数不确定呢

59izk,com神奇百货,神奇百货网官网,shenqi,一个神奇的导购站!!
2011-09-26 18:51
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
收藏
得分:0 
先用init_SeqList()初始化,
以后每次加入一元素就将last++;

2011-09-26 18:57
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
收藏
得分:0 
我上面的写的有点不规范。
程序代码:
  SeqList *A,*B,*L;
  A=init_SeqList();
  B=init_SeqList();
  for(int i=0;i<5;i++)
  {
      A->data[i]=2*i;
      A->last++;
      B->data[i]=2*i+1;
      B->last++;
  }
应该这么写的。函数传参数也要改下,不过你的函数参数本来就设计得不好。。
最好是传指针。不要传整个对象。


2011-09-26 19:10
zzqqrr
Rank: 6Rank: 6
来 自:299294817
等 级:侠之大者
威 望:1
帖 子:155
专家分:408
注 册:2011-6-11
收藏
得分:0 
谢了啊,

59izk,com神奇百货,神奇百货网官网,shenqi,一个神奇的导购站!!
2011-09-28 14:43
快速回复:数据结构中的线性表
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031004 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved