数据结构中的算法如何用C语言描述?请各位大神指点
我一直不明白,怎样把一个数据结构中的算法写成一个程序。举一个简单的线性表的算法例子,他的完整程序应该是怎样的?将两个线性表La与Lb合并算法:voidunion(List...
我一直不明白,怎样把一个数据结构中的算法写成一个程序。
举一个简单的线性表的算法例子,他的完整程序应该是怎样的?
将两个线性表La与Lb合并
算法:
void union(List &La, List Lb)
{
La_len = ListLength(La) ;
Lb_len = ListLength(Lb) ;
for ( i = 1; i < = Lb_len ; i++ )
{ GetElem(Lb,i,e) ;
if ( ! LocateElem(La , e , equal ) ) ListInsert ( La , ++La_len , e ) ;
}
}
求大神告知这个算法的完整程序是怎样的,谢谢 展开
举一个简单的线性表的算法例子,他的完整程序应该是怎样的?
将两个线性表La与Lb合并
算法:
void union(List &La, List Lb)
{
La_len = ListLength(La) ;
Lb_len = ListLength(Lb) ;
for ( i = 1; i < = Lb_len ; i++ )
{ GetElem(Lb,i,e) ;
if ( ! LocateElem(La , e , equal ) ) ListInsert ( La , ++La_len , e ) ;
}
}
求大神告知这个算法的完整程序是怎样的,谢谢 展开
4个回答
展开全部
数据结构中的算法,大部分都是用伪代码实现的,比如你这里的代码,它既包含了c语言的一些代码,同时也有c++的部分,这里只是想提供这种思路,该怎么做,但是当你把它想用完整的程序运行起来时,还是需要做一定工作的。
以你的代码为例。
因为在书的前面已经定义了几种操作,ListLength(L)表示返回表L中的元素个数,GetElem(L,i,&e)表示用e返回L中第i个数据元素的个数,LocateElem(L, e , equal ) ) ListInsert ( L , i , e ) 等等,所以在这里就直接用了。
当用程序实现时,你要先将这几种功能实现,返回个数,得到第i个数据元素,等等,数据结构的话是教你一种程序设计的思想,具体细节自己实现。
以你的代码为例。
因为在书的前面已经定义了几种操作,ListLength(L)表示返回表L中的元素个数,GetElem(L,i,&e)表示用e返回L中第i个数据元素的个数,LocateElem(L, e , equal ) ) ListInsert ( L , i , e ) 等等,所以在这里就直接用了。
当用程序实现时,你要先将这几种功能实现,返回个数,得到第i个数据元素,等等,数据结构的话是教你一种程序设计的思想,具体细节自己实现。
2015-10-15
展开全部
给你个求并集交集的程序你自己看看吧。很好理解的
自己写的
望采纳。
#include<stdio.h>
#include<malloc.h>
#define maxsize 50
typedef int ElemType;
typedef struct list
{
ElemType node[maxsize];
int length;
} list;
void creat(list *&L)
{
L=(list *)malloc(sizeof(list));
L->length=0;
}
bool search(list *L1,int e)
{
int i=0;
while( i<L1->length)
{
if(L1->node[i]==e)
return true;
i++;
}
return false;
}
void jiaoji(list *L1,list *L2)
{
int i=0;
while( i<L1->length )
{
if(search(L2,L1->node[i]))
{
printf("%d ",L1->node[i]);
}
i++;
}
printf("\n");
}
void chaji(list *L1,list *L2)
{
int i=0;
while(i<L1->length)
{
if(!search(L2,L1->node[i]))
{
printf("%d ",L1->node[i]);
}
i++;
}
printf("\n");
}
void bingji(list *L1,list *L2)
{
int i=0;
while(i<L1->length)
{
printf("%d ",L1->node[i]);
i++;
}
i=0;
while(i<L2->length)
{
if(!search(L1,L2->node[i]))
{
printf("%d ",L2->node[i]);
}
i++;
}
printf("\n");
}
int main()
{
list *L1=NULL;
list *L2=NULL;
int i=0,n,m,re=0;
scanf("%d",&n);
scanf("%d",&m);
creat(L1);
for(i=0;i<n;i++)
{
scanf("%d",&L1->node[i]);
L1->length++;
}
creat(L2);
for(i=0;i<m;i++)
{
scanf("%d",&L2->node[i]);
L2->length++;
}
i=0;
while(i<L1->length)
{
if(search(L2,L1->node[i]))
re++;
i++;
}
printf("%d ",L1->length+L2->length-re);
bingji(L1,L2);
printf("%d ",re);
jiaoji(L1,L2);
printf("%d ",L1->length-re);
chaji(L1,L2);
return 0;
}
自己写的
望采纳。
#include<stdio.h>
#include<malloc.h>
#define maxsize 50
typedef int ElemType;
typedef struct list
{
ElemType node[maxsize];
int length;
} list;
void creat(list *&L)
{
L=(list *)malloc(sizeof(list));
L->length=0;
}
bool search(list *L1,int e)
{
int i=0;
while( i<L1->length)
{
if(L1->node[i]==e)
return true;
i++;
}
return false;
}
void jiaoji(list *L1,list *L2)
{
int i=0;
while( i<L1->length )
{
if(search(L2,L1->node[i]))
{
printf("%d ",L1->node[i]);
}
i++;
}
printf("\n");
}
void chaji(list *L1,list *L2)
{
int i=0;
while(i<L1->length)
{
if(!search(L2,L1->node[i]))
{
printf("%d ",L1->node[i]);
}
i++;
}
printf("\n");
}
void bingji(list *L1,list *L2)
{
int i=0;
while(i<L1->length)
{
printf("%d ",L1->node[i]);
i++;
}
i=0;
while(i<L2->length)
{
if(!search(L1,L2->node[i]))
{
printf("%d ",L2->node[i]);
}
i++;
}
printf("\n");
}
int main()
{
list *L1=NULL;
list *L2=NULL;
int i=0,n,m,re=0;
scanf("%d",&n);
scanf("%d",&m);
creat(L1);
for(i=0;i<n;i++)
{
scanf("%d",&L1->node[i]);
L1->length++;
}
creat(L2);
for(i=0;i<m;i++)
{
scanf("%d",&L2->node[i]);
L2->length++;
}
i=0;
while(i<L1->length)
{
if(search(L2,L1->node[i]))
re++;
i++;
}
printf("%d ",L1->length+L2->length-re);
bingji(L1,L2);
printf("%d ",re);
jiaoji(L1,L2);
printf("%d ",L1->length-re);
chaji(L1,L2);
return 0;
}
更多追问追答
追问
嗯(⊙_⊙),程序在哪里?
追答
没看到吗?发过去了啊。
你重新加载一下页面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-10-20
展开全部
主要采用伪码和C语言之间的类C语言作为描述工具,有时也用伪码描述一些抽象算法,用VB就可以编译了不用纠结,你可以买本书看看具体算法怎么写的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-10-15
展开全部
数据结构中的算法是一种思想,没必要直接拿来扔代码里的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询