数据结构的习题(C语言版)

1.已知有两个按元素值递增有序的顺序表A和B,设计一个算法将表A和表B的全部元素归并为一个按元素值非递减有序的顺序表C。
要求:从键盘输入顺序表A和B的各元素,编程实现上述算法,输出顺序表A、顺序表B和顺序表C 的所有元素值 。
2.已知线性表A按顺序存储,且每个元素都是互不相等的整数。编程实现把所有奇数移到所有的偶数前边的算法。
要求:(1)时间最少,辅助空间最少;
(2)线性表A的各元素初始值从键盘输入;
(3)输出结果。
本人刚刚接触这门课,感觉好难啊。做题也没思路怎么办啊?求各位指教啊。

第一个问题,分析下要求,可以知道要做的事情是合并两个数组到一个数组里去,数组C的长度是AB之和。表C的第一个字符不是A的第一个字符就是B的第一个字符。因此接下来要做的事情就是做一个长度为AB之和的循环,每一次找出A或B中的最小元素,存到C里面去,循环结束,C就自动有了。

第二个问题,有时间和空间的要求,不太容易,只有更好,没有最好。不过提供一个思路。可以首先扫描整个数列,将奇数偶数的位置和个数标注出来,存在一个数列中。例如数列奇 奇 偶 奇 奇,可以得到奇数个数为4,位置为[0,1,3,4],偶数为1,位置为[2],因此要生成的数列中前4个必定为奇数,而题目中没有对大小的要求,因此只用将偶数与最后面的奇数对换位置即可。对换的次数即为偶数的个数。

大概思路如此,不过有很多方法可以高效的存储和计算,具体实现,希望你能亲自琢磨下,还可以巩固一下C技巧。
祝好,有问题可以探讨。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-05
第一个问题,分析下要求,可以知道要做的事情是合并两个数组到一个数组里去,数组C的长度是AB之和。表C的第一个字符不是A的第一个字符就是B的第一个字符。因此接下来要做的事情就是做一个长度为AB之和的循环,每一次找出A或B中的最小元素,存到C里面去,循环结束,C就自动有了。

第二个问题,有时间和空间的要求,不太容易,只有更好,没有最好。不过提供一个思路。可以首先扫描整个数列,将奇数偶数的位置和个数标注出来,存在一个数列中。例如数列奇 奇 偶 奇 奇,可以得到奇数个数为4,位置为[0,1,3,4],偶数为1,位置为[2],因此要生成的数列中前4个必定为奇数,而题目中没有对大小的要求,因此只用将偶数与最后面的奇数对换位置即可。对换的次数即为偶数的个数。

大概思路如此,不过有很多方法可以高效的存储和计算,具体实现,希望你能亲自琢磨下,还可以巩固一下C技巧。

数据结构(C语言版),求高手解决。。
1.二叉树是度为2的有序树( )【答案】× 2.完全二叉树一定存在度为1的结点( )【答案】× 3.深度为K的二叉树中结点总数≤2k-1( )【答案】√ 4.由一棵二叉树的先序序列和后序序列可以惟一确定它( )【答案】× 5.完全二叉树中,若一个结点没有左孩子,则它必是树叶...

一道数据结构(c语言描述)题,希望大佬帮我看看,萌新不会?
include "stdio.h"struct PLU{ double r,i;};PLU plu_add(PLU a,PLU b,char c){\/\/运算函数 PLU t;if(c=='+'){\/\/+ t.r=a.r+b.r;t.i=a.i+b.i;} else if(c=='-'){\/\/- t.r=a.r-b.r;t.i=a.i-b.i;} else if(c=='*'){\/\/ t.r=a.r*b.r-a.i*b.i...

数据结构c语言版一道题求解
,element[n - 1]存放线性表中的元素 *\/}; typedef struct SeqList *PSeqList;PSeqList createNullList_seq(int m ) {\/* 创建新的顺序表 *\/ PSeqList palist= (PSeqList)malloc(sizeof(struct SeqList)); if (palist!=NULL){ palist->element= (DataType*)malloc(sizeo...

数据结构(C语言版)题:由一个栈的输入序列12345,设计算法,分别输出54321...
54321:1~5这5个数连续进栈后再5个数连续出栈,用2个循环就可以了 32145:1~3这3个数连续进栈后再3个数连续出栈,也可以用2个循环,然后是4进4出,5进5出

关于数据结构(C语言)的几个题
最多比较次数参考严蔚敏《数据结构》第九章 查找 220页。5.例如图中这棵树,假设i=2,2i=4不大于n,2i+1=5大于n,所以2这个结点没有右子树。6.顺序栈的类型定义:typedef struct{ char *base; \/\/也可用ElemType,只要定义了就行 char *top; int stacksize;}SqStackTp; \/\/...

一份C语言的数据结构题目,急求答案
第一题;Search (BiTree t,ElemType x){ struct nodee;{BiTree pp;int tag;}s[100];int top; Bitree p;top=0; p=t;while(p!=NULL&&p->p!=NULL){while(p!=NULL&&p->data!=x){top++;s[top].pp=p;s[top].tag=0;p=p->lchild;} if(p!=NULL&&p->data==x){for(i=1...

数据结构的习题(C语言版)
第一个问题,分析下要求,可以知道要做的事情是合并两个数组到一个数组里去,数组C的长度是AB之和。表C的第一个字符不是A的第一个字符就是B的第一个字符。因此接下来要做的事情就是做一个长度为AB之和的循环,每一次找出A或B中的最小元素,存到C里面去,循环结束,C就自动有了。第二个问题...

数据结构(c语言版)题目求答案
Q->next->next=p->next;free(p);rturn OK;}\/\/DeCiqueue 3.31 int Palindrome_Test(){ InitStack(S);InitQueue(Q);while((c=getchar())!='@'){ Push(S,c);EnQueue(Q,c);} while(!StackEmpty(S)){ pop(S,a);DeQueue(Q,b);if(a!=b)return ERROR;} return OK;} ...

关于数据结构的问题,用C语言描述
关于数据结构的问题,用C语言描述 60 1.设一函数f(x,y)=(1+A*(e^B\/cosθ)*(1+C*(cosψ)^2),其中θ=(π*x)\/180,ψ=(π*y)\/180,参数A=-0.5,B=-0.4,C=-0.1。x从0变化到89,步长为1,y从0变化到359,步长为1。采用一种数据结... 1. 设一函数 f(x,y)=(1+A*(e^B\/cosθ)*(1...

数据结构c语言版问题
按列为主序存放于一个连续的存储空间中 a[10,20]一列10个元素,那么a[6,2],2表示第三列(前面有0,1),前面两列就是20 第三列6个,得到20+6=26,开始地址为200,则200+26=226

相似回答