网站建设资讯

NEWS

网站建设资讯

C语言函数表格合并多个 c函数能合并列表吗

C语言编写一个程序实现两个有序(从小到大)顺序表合并成为一个顺序表,合并后的结果放在第一个顺序表中。

你提到的“奇怪错误”是由于你的exit宏和函数重名了,所以预处理器会把程序中的exit用-1代替,所以出错。

创新互联长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为将乐企业提供专业的网站设计、成都做网站将乐网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

另外,你的合并函数也是错误的,无法达到要求,整个程序修改如下:

//---------------------------------------------------------------------------

#include stdio.h

#include stdlib.h //注意这里,exit()函数要用到这个文件,这个文件已经包含了malloc()等函数的声明

#define OK 1

#define LIST_INIT_SIZE 100

#define OVERFLOW 0

#define EXIT -2 //************注意这里

typedef int ElemType;

typedef int Status;

typedef struct {

ElemType *elem;

int length;

int listsize;

}SqList;

Status InitList_Sq(SqList *L)

{ L-elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));

if(!L-elem) exit(OVERFLOW);

L-length=0;

L-listsize=LIST_INIT_SIZE;

return OK;

}

void Create_Sq(SqList *L)

{ int i,n;

printf("创建一个有序表:\n");

printf("输入有序表中元素的个数:");

scanf("%d",n);

L-length=n;

for(i=0;in;i++){

printf("输入第%d个元素的值:",i+1);

scanf("%d",L-elem[i]);

printf("\n");

}

}

void Disp_Sq(SqList *L) //************注意这里

{ int i,n;

n=L-length;

for(i=0;in;i++)

printf("%5d",L-elem[i]);

printf("\n");

}

void Combine(SqList *la,SqList *lb) //************注意这里,此函数被重新编写

{

ElemType *pa=la-elem,*pb=lb-elem ;

int i,j,k,len_a=la-length,len_b=lb-length;

if ((la-elem=malloc((len_a+len_b)*sizeof(ElemType)))==NULL) exit(OVERFLOW);

for (k=i=j=0; ilen_ajlen_b; ) {

if (pa[i]pb[j]) la-elem[k++]=pa[i++];

else la-elem[k++]=pb[j++];

}

while (ilen_a)

la-elem[k++]=pa[i++];

while (jlen_b)

la-elem[k++]=pb[j++];

la-length=k;

la-listsize=k;

free(pa);

}

void main()

{SqList L1,L2;

InitList_Sq(L1);

InitList_Sq(L2);

Create_Sq(L1);

Disp_Sq(L1);

printf("\n");

Create_Sq(L2);

Disp_Sq(L2); //************注意这里

printf("\n");

Combine(L1,L2);

Disp_Sq(L1); //************注意这里

}

//---------------------------------------------------------------------------

我该如何用C语言合并两个csv文件?

定义一个成员结构体。

再定义此结构体的两个数组,数组大小是csv文件中存储的成员数。

使用fscanf函数读取A.csv的数据存入一个结构体数组中,读取B.csv的数据存入另一个结构体数组中。

循环遍历结构体数组,把一个数组的元素值赋值给另一个数组的元素。这样另一个结构体数组就有了两个csv文件中的数据。

使用fopen函数创建并打开C.csv文件。

把数据完整的另一个结构体数组的数据使用fprintf函数输出到C.csv文件中。

编写一个函数实现两个按升序排列的顺序表的合并操作,要用C语言编写,能在程序上运行的,C的初学者,谢谢

注释的部分是采用数组实现的,未注释的是采用链表实现的,可以将链表实现的注释起来和数组实现的运行做对比

#include "stdio.h"

#include "stdlib.h"

/*采用数组实现

int merge(int* a,int* b,int*c,int alen,int blen)

{

int i=0,j=0,k=0;

//每次将a和b中当前的元素进行比较,并将小的一个存入到c中

while(ialen jblen)

{

if(a[i]b[j])

c[k]=a[i++];

else c[k]=b[j++];

k++;

}

//其中一个数组已经结束,将另一个数组剩余部分全部复制到c即可

while(ialen)

c[k++]=a[i++];

while(jblen)

c[k++]=b[j++];

return k;//返回值为c的有效长度

}

void main()

{

int a[]={1,3,5,7,9,10,12,14};

int b[]={2,4,6,8,10,11,12,13};

int c[100];

int i,clen;

clen=merge(a,b,c,sizeof(a)/sizeof(*a),sizeof(b)/sizeof(*b));

for(i=0;iclen;i++)

printf("%d ",c[i]);

printf("\n");

}

*/

struct Node

{

int value;

struct Node* next;

};

struct LinkList

{

struct Node* head;

};

//将数组a赋值给链表list

void setLinkList(int* a,int alen,struct LinkList* list)

{

int i;

struct Node* p,*temp;

list-head=(struct Node*)malloc(sizeof(struct Node));

p=list-head;

for(i=0;ialen;i++)

{

p-value=a[i];

p-next=(struct Node*)malloc(sizeof(struct Node));

temp=p;

p=p-next;

}

free(p);

temp-next=NULL;//尾指针赋NULL

}

void mergeLinkList(struct LinkList* a,struct LinkList* b,struct LinkList* c)

{

struct Node *p=a-head,*q=b-head,*r,*temp;

c-head=(struct Node*)malloc(sizeof(struct Node));

r=c-head;

while(p!=NULL q!=NULL)

{

if(p-valueq-value)

{

r-value=p-value;

p=p-next;

}

else

{

r-value=q-value;

q=q-next;

}

r-next=(struct Node*)malloc(sizeof(struct Node));

temp=r;

r=r-next;

}

while(p!=NULL)

{

r-value=p-value;

p=p-next;

r-next=(struct Node*)malloc(sizeof(struct Node));

temp=r;

r=r-next;

}

while(q!=NULL)

{

r-value=q-value;

q=q-next;

r-next=(struct Node*)malloc(sizeof(struct Node));

temp=r;

r=r-next;

}

free(r);

temp-next=NULL;

}

#define MAX_LEN 1000

void main()

{

int a[MAX_LEN];//={1,3,5,7,9,10,12,14};

int b[MAX_LEN];//={2,4,6,8,10,11,12,13};

int alen,blen,i;

struct LinkList alist,blist,clist;

struct Node* p;

printf("Please input the length of a : ");

scanf("%d",alen);

fflush(stdin);

printf("Please input %d number and separate them with space :\n",alen);

for(i=0;ialen;i++)

scanf("%d",a+i);

fflush(stdin);//这句很有必要,当输入的数据超过alen时,后面的数据将被忽略

printf("Please input the length of b : ");

scanf("%d",blen);

fflush(stdin);

printf("Please input %d number and separate them with space :\n",blen);

for(i=0;iblen;i++)

scanf("%d",b+i);

fflush(stdin);

setLinkList(a,alen,alist);

setLinkList(b,blen,blist);

mergeLinkList(alist,blist,clist);

p=clist.head;

printf("The result is :\n");

while(p!=NULL)

{

printf("%d ",p-value);

p=p-next;

}

printf("\n");

}

C语言 顺序表的合并

1、c语言是没有引用的,可以使用一个const指针来模拟引用void InitList(SqList *L){L-last=0;}。

2、这个是顺序表的初始化,不用管int LenList(SqList L){return L.last;}。

3、插入操作,这一步是关键,插入顺序表int InsertList(SqList *L,int i,ElemType x){int k;if(L-last=MAX){printf("表已满,无法插入\n");return 0}else if(i0 || iL-last+1){printf("插入位置不合法\n");return 0;}。

4、这是接着上面的第二步,判断的else{for(k=L-last;ki-1;k--)L-elem[k]=L-elem[k-1];L-elem[i-1]=x;L-last++;return 0;}。

5、canf(%d",a) 是读取整型变量a在内存中的地址,而scanf("%d",a)是读取整型变量a的值。就完成了。


网页题目:C语言函数表格合并多个 c函数能合并列表吗
浏览地址:http://cdweb.net/article/ddggdio.html