用C语言编写程序实现将两个递增顺序表合并为一个递增的顺序表的运算。下面是我的程序,用VC运行不了?

供稿:hz-xin.com     日期:2025-01-15
如何在VC++中编辑和运行C语言程序?

新建-》工程-》win32 console application 输入一个工程名,然后选择第一个,就建立了一个空的工程...然后再选择新建-》C++ source file(C++源程序),取个名字,然后就可以在里面写代码了。包括C和C++代码!
运行的时候当然是选择Build菜单了..然后运行就可以了...(可以按快捷键F7来编译连接然后按Ctrl+F5运行就OK了...)

在你的基础上改的
#include
#include

#define LISTSIZE 100
#define ADD 10
typedef struct {
int *elem;
int length;
int listsize;
}List;//定义线性表的结构体
void SqList(List &L)
{

//int i;//C++中C程序的变量定义放在开始

L.elem=(int *)malloc(LISTSIZE*sizeof(int));
if(!L.elem) exit(0);
L.listsize=LISTSIZE;
//printf("请输入线性表长度:");
//scanf("%d",&L.length);
//printf("为线性表赋值:");
//for(i=0;i<=L.length-1;i++)
//scanf("%5d",&L.elem[i]);
L.length =0;//如果是初始化,那么长度就是0
}//初始化线性表

int InsertSq(List &L,int i,int e)
{
int *p=NULL, *q=NULL;//所有变量的定义都必须置前
if(iL.length+1) return 0;
if(L.length>=L.listsize)
{
int *newbase;
newbase=(int *)realloc(L.elem,(L.listsize+ADD)*sizeof(int));
if(!newbase) exit(0);
L.elem=newbase;
L.listsize+=ADD;
}

q=&L.elem[i-1];
for(p=&L.elem[L.length-1];p>=q;--p)
*(p+1)=*p;
*q=e;
L.length++;
return 1;
}//在线性表的第i个元素之前插入元素e

void PrintList(List L)
{
printf("顺序表中的元素:
");
for(int k=0;k<=L.length-1;k++)
printf("%5d",L.elem[k]);
printf("
");
}

void main()
{

//void SqList(List &L);
//int InsertSq(List &L,int i,int e);使用之前已经定义了,可以不用函数说明
List L;
int i,e; //函数调用前,变量必须定义

SqList(L);
printf("输入顺序表中元素的个数:");
scanf("%d",&i);

printf("请输入元素:");
for(int j=1;j<=i;j++)
{
scanf("%d",&e);
InsertSq(L,j,e);
}

PrintList(L);
printf("输入插入的元素及其位置:");
scanf("%5d%5d",&e,&i);
InsertSq(L,i,e);
PrintList(L);
}

#include<stdio.h>
#include<stdlib.h>
#define MAXLEN 20
typedef int elemtype;
typedef struct
{elemtype v[MAXLEN];
int len;
}sqlist;
sqlist *a,*b,*c;
void f( sqlist *a, sqlist *b, sqlist *c)
{
int i,j,k;
i=1;j=1;k=1;
while(i<=a->len&&j<=b->len)
{
if(a->v[i]<=b->v[j])
{c->v[k]=a->v[i];i++; }
else {c->v[k]=b->v[j];j++;}
k++;
}
if(i>a->len)
for(;j<=b->len;j++,k++)
c->v[k]=b->v[j];
else
for(;i<=a->len;i++,k++)
c->v[k]=a->v[i];
}
void main()
{
int i,j,k;
a=(sqlist*)malloc(sizeof(sqlist));
b=(sqlist*)malloc(sizeof(sqlist));
c=(sqlist*)malloc(sizeof(sqlist));
a->len=5;b->len=5;c->len=10;
for(i=1;i<=a->len;i++)
{ scanf("%d",&a->v[i]);getchar();}
for(j=1;j<=b->len;j++)
{ scanf("%d",&b->v[j]);getchar();}
f(a,b,c) ;
for(i=1;i<=a->len;i++)
printf("%d ",a->v[i]);
printf("\n");
for(j=1;j<=b->len;j++)
printf("%d ",b->v[j]);
printf("\n");
for(k=1;k<=c->len;k++)
printf("%d ",c->v[k]);
printf("\n");
free(a);
free(b);
free(c);
}
改成这样不知可不可以,你的主要是缺少为结构指针分配内存的语句,同时那个比较函数下面少了一对大括号,具体你看程序吧,

编译信息有没有

数据结构假设分别以两个元素的值递增有序线性表a,b表示两个集合,现在...
include<iostream> using namespace std;struct Node { int data;Node *next;};class LinkList { public:Node * intLinkList(int a[],int n){ first=new Node;first->next=NULL;for(int i=(n-1);i>=0;i--){ Node *s;s=new Node;s->data=a[i];s->next=first->next;first->...

编写算法将两个递增单链表合并成一个递减的线性表假设有两个按元素...
你的思路是对的,先按递增合并,再反转。递增合并比较简单,翻转的时候,比较好的方法是,先用一个指针数组存储所有节点指针,然后逆序生成反转后的链表。说到这里,程序就能写出来了。但是综合考虑,第一步可以省略了,直接把两个链表的所有节点指针存入数组,存入的同时完成递增排序,这样可以简单一些 ...

如何将两个递增单链表合并为一个递减单链表,并保留原有节点。求大神给...
\/*采用方法:随机创建两个整型数组,再把它们分别按升序排列,然后用数组元素创建两个链表(升序)list1和list2。然后按要求进行合并。最后输出合并结果,销毁链表*\/ include<stdio.h> include<stdlib.h> include typedef int ElemType;typedef struct LNode { ElemType data;struct LNode *next;}NODE...

c语言对两个递增有序的顺序表进行集合的交运算:选择相同的元素组成新的...
先合并再去掉重复的元素呀

用c语言编写程序,输出从小到大的数字。
C语言程序如下:include<stdio.h> intmain(){ inta,b,c,t;printf("请输入三个数:");scanf("%d%d%d",&a,&b,&c);if(a>b){ t=a;a=b;b=t;} if(a>c){ t=a;a=c;c=t;} if(b>c){ t=b;b=c;c=t;} printf("从小到大的顺序是:%d %d %d\\n",a,b,c);return0;} ...

C语言从一加到一百流程图怎么画
回答:该程序编程基本思路:首先设置两个变量:一个是循环变量 i,用于从 1 到 100 的计数;另一个是累加和变量 sum,并将该变量的初值设置为 0。 然后 i 的值从 1 到 100 一直进行 for 循环,如果 i 的值未到 100,就将 i 的值进行累加,并将其结果存入累加和变量 sum 中,然后 i 再进行递增 ...

...所对应的C列的序号,当没有时,序号自动顺序递增
在这里使用一个max函数巧妙地将我说的三条规则中的第一条和第三条规则合并计算了,我自己还计算是嵌套两层if函数呢。Max后面是两个数组相乘,就是B列和C列的两列数字依次相乘,B列数字先与B2比较是否相同,相同得到1,不相同得到0,因此得到一列0和1组成的数组,C列就是C列本来的序号,这样两组...

假设两个递增有序的顺序表la,lb分别表示两个集合,设计一个算法求la...
int deference(sqlist&la,sqlist&lb,sqlist&c){ int i=0,j=0,k=0;if(la.length+lb.length>lc.length)renturn -1;while(i<la.length&&j<lb.length){ if(la.data[i]==lb.data[j]){ i++;j++;} else if(la.data[i]<lb.data[j]){ lc.data[k++]=la.data[i++];} else ...

c语言以下程序的输出结果是
若要实现两数不相等情况下的交换,可以修改if语句为x!=y,程序将执行t=x,然后x=y,最后y=t。这样,即使两数不相等,也能够实现交换。在第二个程序中,初始值为x=15。当执行while循环时,条件x>10并且x<50成立,即x在10到50之间。程序将执行x++,使得x的值依次递增,直到满足条件不再成立。...

C语言中x++和++x的区别?
C语言中的两个运算符x++和++x在单独使用时,其实质都是对变量x进行递增操作,使其值增加1。然而,它们在与其他操作符或变量结合时,会表现出不同的行为。当你看到a = ++x,这等同于先执行x = x + 1,然后将新的x值赋给a。换句话说,这个过程是先增加x的值,再使用这个新值。而a = x++...