
数据结构c语言怎么运行啊
main(){LINKQUEUElq,*p;intj;p=&lq;initlinkqueue(p);printf("输入一整数(奇数-入队列、偶数-删除队头元素、0-退出...
main()
{
LINKQUEUE lq, *p;
int j;
p=&lq;
initlinkqueue(p);
printf("输入一整数(奇数-入队列、偶数-删除队头元素、0-退出):");
scanf("%d",&j);
while(j!=0) /*输入0-退出*/
{if(j%2==1)enlinkqueue(p,j); /*输入奇数---入队列*/
else j=dellinkqueue(p); /*输入偶数-删除队头元素*/
outlinkqueue(p);
printf("\n输入一整数(奇数-入队列、偶数-删除队头元素、0-退出):");
scanf("%d",&j);}
}
用C语言需要怎么改 展开
{
LINKQUEUE lq, *p;
int j;
p=&lq;
initlinkqueue(p);
printf("输入一整数(奇数-入队列、偶数-删除队头元素、0-退出):");
scanf("%d",&j);
while(j!=0) /*输入0-退出*/
{if(j%2==1)enlinkqueue(p,j); /*输入奇数---入队列*/
else j=dellinkqueue(p); /*输入偶数-删除队头元素*/
outlinkqueue(p);
printf("\n输入一整数(奇数-入队列、偶数-删除队头元素、0-退出):");
scanf("%d",&j);}
}
用C语言需要怎么改 展开
6个回答
展开全部
首先要确定你想采用线性表的顺序存储结构还是链式存储结构。
以顺序存储结构为例:
#include <stdio.h>
#include <stdlib.h>
#define ERROR 0
#define OK 1
typedef int Status;
typedef int ElemType;//顺序表测试用
const int MaxSize=100; //100只是示例性的数据,可以根据实际问题具体定义
const int Increasement=10;
typedef struct{
ElemType *elem;
int length;
int listsize;
}SeqList;
Status InitList(SeqList &S,int n=MaxSize)
{//初始化线性表
if(n<=0)
n=MaxSize;
S.elem =(ElemType *)malloc(n*sizeof(ElemType));
if(S.elem ==NULL)
exit(ERROR);
S.length =0;
S.listsize =n;
return OK;
}
int ListLength(SeqList &S)
{ //求线性表的长度
return S.length ;
}
void GetElem(SeqList &S,int i,ElemType &e)
{//按位查找,取线性表的第i个元素
if(i<1 || i>S.length )
exit(ERROR);
e=S.elem [i-1];
}
Status ListInsert(SeqList &S,int i, ElemType e)
{ //在线性表中第i个位置插入值为e的元素
if(i<1 || i>S.length+1 )
return ERROR;
if(S.length >=S.listsize )
{
ElemType *newbase=(ElemType *)realloc(S.elem,Increasement*sizeof(ElemType));
if(newbase==NULL)
exit(ERROR);
S.elem =newbase;
S.listsize =S.listsize+Increasement;
}
for(int j=S.length -1;j>=i-1;j--)
S.elem [j+1]=S.elem [j];
S.elem [i-1]=e;
S.length++;
return OK;
}
Status Output(SeqList S)
{//遍历线性表,按序号依次输出各元素
if(S.length ==0)
return ERROR;
for(int i=0;i<S.length ;i++)
printf("%d\t",S.elem[i]);
printf("\n");
return OK;
}
void BinInsertSort(int r[ ], int n)
{//折半插入排序
int low,high,mid;
ElemType e;
for (int i=1; i<n; i++)
{
e=r[i];
low=0; high=i;
while (low<=high)
{
mid=(low+high)/2;
if (e<r[mid])
high=mid-1;
else low=mid+1;
}
for (int j=i-1; j>=high+1; j--)
r[j+1]=r[j];
r[high+1]=e;
}
}
void MergeList(SeqList La, SeqList Lb, SeqList &Lc) {
// 已知顺序表La和Lb中的元素按值非递减排列。
// 归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减排列。
int La_len, Lb_len;
ElemType ai, bj;
int i=1, j=1, k=0;
InitList(Lc);
La_len = ListLength(La);
Lb_len = ListLength(Lb);
while ((i <= La_len) && (j <= Lb_len)) { // La和Lb均非空
GetElem(La, i, ai);
GetElem(Lb, j, bj);
if (ai <= bj) {
ListInsert(Lc, ++k, ai);
++i;
} else {
ListInsert(Lc, ++k, bj);
++j;
}
}
while (i <= La_len) {
GetElem(La, i++, ai); ListInsert(Lc, ++k, ai);
}
while (j <= Lb_len) {
GetElem(Lb, j++, bj); ListInsert(Lc, ++k, bj);
}
} // MergeList
void main()
{
SeqList La,Lb,Lc;
InitList(La,3);
InitList(Lb,5);
ElemType data;
printf("输入顺序表La的元素值:\n");
for(int i=1;i<=3;i++)
{
scanf("%d",&data);
ListInsert(La, i, data);
}
fflush(stdin);
printf("输入顺序表Lb的元素值:\n");
for(i=1;i<=5;i++)
{
scanf("%d",&data);
ListInsert(Lb, i, data);
}
//La和Lb非递减排序
BinInsertSort(La.elem , 3);
BinInsertSort(Lb.elem , 5);
MergeList(La,Lb,Lc);
Output(Lc);
}
以顺序存储结构为例:
#include <stdio.h>
#include <stdlib.h>
#define ERROR 0
#define OK 1
typedef int Status;
typedef int ElemType;//顺序表测试用
const int MaxSize=100; //100只是示例性的数据,可以根据实际问题具体定义
const int Increasement=10;
typedef struct{
ElemType *elem;
int length;
int listsize;
}SeqList;
Status InitList(SeqList &S,int n=MaxSize)
{//初始化线性表
if(n<=0)
n=MaxSize;
S.elem =(ElemType *)malloc(n*sizeof(ElemType));
if(S.elem ==NULL)
exit(ERROR);
S.length =0;
S.listsize =n;
return OK;
}
int ListLength(SeqList &S)
{ //求线性表的长度
return S.length ;
}
void GetElem(SeqList &S,int i,ElemType &e)
{//按位查找,取线性表的第i个元素
if(i<1 || i>S.length )
exit(ERROR);
e=S.elem [i-1];
}
Status ListInsert(SeqList &S,int i, ElemType e)
{ //在线性表中第i个位置插入值为e的元素
if(i<1 || i>S.length+1 )
return ERROR;
if(S.length >=S.listsize )
{
ElemType *newbase=(ElemType *)realloc(S.elem,Increasement*sizeof(ElemType));
if(newbase==NULL)
exit(ERROR);
S.elem =newbase;
S.listsize =S.listsize+Increasement;
}
for(int j=S.length -1;j>=i-1;j--)
S.elem [j+1]=S.elem [j];
S.elem [i-1]=e;
S.length++;
return OK;
}
Status Output(SeqList S)
{//遍历线性表,按序号依次输出各元素
if(S.length ==0)
return ERROR;
for(int i=0;i<S.length ;i++)
printf("%d\t",S.elem[i]);
printf("\n");
return OK;
}
void BinInsertSort(int r[ ], int n)
{//折半插入排序
int low,high,mid;
ElemType e;
for (int i=1; i<n; i++)
{
e=r[i];
low=0; high=i;
while (low<=high)
{
mid=(low+high)/2;
if (e<r[mid])
high=mid-1;
else low=mid+1;
}
for (int j=i-1; j>=high+1; j--)
r[j+1]=r[j];
r[high+1]=e;
}
}
void MergeList(SeqList La, SeqList Lb, SeqList &Lc) {
// 已知顺序表La和Lb中的元素按值非递减排列。
// 归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减排列。
int La_len, Lb_len;
ElemType ai, bj;
int i=1, j=1, k=0;
InitList(Lc);
La_len = ListLength(La);
Lb_len = ListLength(Lb);
while ((i <= La_len) && (j <= Lb_len)) { // La和Lb均非空
GetElem(La, i, ai);
GetElem(Lb, j, bj);
if (ai <= bj) {
ListInsert(Lc, ++k, ai);
++i;
} else {
ListInsert(Lc, ++k, bj);
++j;
}
}
while (i <= La_len) {
GetElem(La, i++, ai); ListInsert(Lc, ++k, ai);
}
while (j <= Lb_len) {
GetElem(Lb, j++, bj); ListInsert(Lc, ++k, bj);
}
} // MergeList
void main()
{
SeqList La,Lb,Lc;
InitList(La,3);
InitList(Lb,5);
ElemType data;
printf("输入顺序表La的元素值:\n");
for(int i=1;i<=3;i++)
{
scanf("%d",&data);
ListInsert(La, i, data);
}
fflush(stdin);
printf("输入顺序表Lb的元素值:\n");
for(i=1;i<=5;i++)
{
scanf("%d",&data);
ListInsert(Lb, i, data);
}
//La和Lb非递减排序
BinInsertSort(La.elem , 3);
BinInsertSort(Lb.elem , 5);
MergeList(La,Lb,Lc);
Output(Lc);
}

2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
你这应该是数据结构书上的部分代码,也就是说不完整的代码。当年我上这个课的时候也很郁闷不知道怎么去改,让它能运行。你需要定义好队列,通过结构体定义,然后再定义队列的处理函数,比如添加函数,删除函数等,然后在main函数里面调用就行了,这样才能完整的让程序编译运行,当然那些定义的结构体或者函数要包含进来或者是跟main函数放一起。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
任何C语言程序包括用C语言编写的数据结构程序,都必须经过,编辑、编译、链接、执行四个阶断。
1、编辑,即编写源码,可以使用任何的文本编辑器来编写源码,以windows为例,即可以使用vc、vs等专业的IDE,也可以使用记事本、editplus、以及gvim等文本编辑器来编写源码。
2、编译,即通过C语言编译器对C语言源码进行编译,比如gcc、vc等等。
3、链接,编译完成后,需要通过链接器,将所有的库、编译器输出文件,合并为一个操作系统可加载的应用程序,在Windows平台这种格式为PE格式,在Linux平台这种格式称为ELF格式。
4、运行,当链接完成后,一个可执行的C语言程序就产生了,这时候通过图形界面的双击或者控制台才可以运行程序。
1、编辑,即编写源码,可以使用任何的文本编辑器来编写源码,以windows为例,即可以使用vc、vs等专业的IDE,也可以使用记事本、editplus、以及gvim等文本编辑器来编写源码。
2、编译,即通过C语言编译器对C语言源码进行编译,比如gcc、vc等等。
3、链接,编译完成后,需要通过链接器,将所有的库、编译器输出文件,合并为一个操作系统可加载的应用程序,在Windows平台这种格式为PE格式,在Linux平台这种格式称为ELF格式。
4、运行,当链接完成后,一个可执行的C语言程序就产生了,这时候通过图形界面的双击或者控制台才可以运行程序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要先定义一个LINKQUEUE结构体,才能使用这种结构。
initlinkqueue(*LINKQUEUE),enlinkqueue(*LINKQUEUE,int),dellinkqueue(*LINKQUEUE),outlinkqueue(*LINKQUEUE)这几个函数也要定义
initlinkqueue(*LINKQUEUE),enlinkqueue(*LINKQUEUE,int),dellinkqueue(*LINKQUEUE),outlinkqueue(*LINKQUEUE)这几个函数也要定义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一、initlinkqueue没有定义
二、enlinkqueue没有定义
三、delinkqueue没有定义
四、outlinkqueue没有定义
结束~
二、enlinkqueue没有定义
三、delinkqueue没有定义
四、outlinkqueue没有定义
结束~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询