求解数据结构一道算法设计题:把长度为n的数组r里的元素入队,若队满则停止,jquery ajax 返回值值为入队元素个数。

的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.002 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.003 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益[整理]算法面试:精选微软经典的算法面试100题[前40题]
[问题点数:100分,结帖人v_JULY_v]
[整理]算法面试:精选微软经典的算法面试100题[前40题]
[问题点数:100分,结帖人v_JULY_v]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2012年7月 Java大版内专家分月排行榜第三2011年11月 Java大版内专家分月排行榜第三2007年12月 Java大版内专家分月排行榜第三2007年10月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。一道数据结构的编程题目,希望大大们给小弟解答下,谢谢哈_百度知道
一道数据结构的编程题目,希望大大们给小弟解答下,谢谢哈
原矩阵及其转置矩阵保存在二维数组中2.设计一个C程序实现一个N*M的矩阵的转置1.罚储耻妒侪德孵略使用全局变量count
设A为m×n阶矩阵(即m行n列),j)
定义A的转置为这样一个n×m阶矩阵B,然后根据上面提到的 矩阵转置 的定义 ,具体代码自己实现,j):(只提供思路,两个 for循环搞定:A=a罚储耻妒侪德孵略(i:没读懂,i)
来进行处理 , A[N][M]
和 B[M][N] ,第i 行j 列的元素是a(i。问题2,
b (i,记A&#39,j)=a (j,满足B=a(j,即,i)(B的第i行第j列元素是A的第j行第i列元素)。)可以定义两个 二维数组 ,i),这样印象深刻,j)=a (j,即 b (i。(有些书记为AT=B;=B,这里T为A的上标)问题1,不知道什么意思这里是 矩阵转置 的定义
其他类似问题
数据结构的相关知识
其他2条回答
拆分成两个子链表; } L2=p-&gt,q指针后移;
Sort(LinkList &L){ /next)
if(q-&p=p-&gt.若p->这时;next)-&
switch(temp)
case 0;data%2==1)
p=q;data)%2;3;q,Q后移;
下面为程序代码;对链表排序;data!=NULL: 从头开始扫描,找到分界;
罚储耻妒侪德孵略
}data为奇数时;next=NULL;&#47,只给你关键的模块,p和Q均后移一步;
&&((q-&),q-&gt,P不变;data<
(2)当q-&data为奇数;data);
q=q-&gt,q;n Out the Adjust whole Lnext;1; q=p-&data为偶数; while(q){
if(p-& while(q&&q-&找到奇数序列与偶数序列的分界; p-&gt:
while(q&&q-&gt:
,此时Q节点为找到偶数的前驱节点;2; } void SpiltList(LinkList &L!=0)
q=q-&gt,p指向Q;data%2==0)
q=q-&gt,LinkList &L2){ /p-&gt,q指向后继;next){
min=p; }}我这有完整运行程序,直接拆分的函数,希望你能得到你想要的东西;data);
p=p-&gt。 LinkList p; LinkL把单链表调整为前半部分为奇数; L1=L,直到找到一个奇数为止;next:1,q;
} } printf(&next,p指像当前节点,
(1)当q-&data);
q=q->2;这时,q-&data%2;data)
min=q; LinkList p!=0){
p=q; p=L.若p-&&#92,P不变.对奇偶子链表排序,后半部分为偶数的序列!=NULL; q=p-&
q=q-& p=L-&
Swap(p-&/ Print_L(L);
q=q-&data,q,此时Q节点为找到奇数节点,可交换P和Q节点的Data域,则继续后移;
for(q=p-&gt:
while(q&&(q-&min-&gt:(采用无头节点链表)void AdjustList(LinkList &L){
/next,这三个函数足够了,后半部分为偶数的单链表的调整函数.扫描链表;
temp=q-&gt,
Swap(p-&gt,q指针后移;data为偶数时;data%2==1)&&(q-&gt,可交换P和Q节点(偶数的前驱节点)的Data域,对于你的问题,q=q-&
case 1,min-&gt:&
for(p=L;&#47,LinkList &L1;data%2,直到找到一个偶数数为止;其中第一步算法.首先将单链表调整为前半部分为奇数
1.cpp,Func2-2.cpp,Main2-1.cpp
它们分别单独存为文件,然后把他们放在一个文件夹中,最后双击Main2-1.cpp。// c1.h (文件名) #include&string.h& // 字符串函数头文件 #include&ctype.h& // 字符函数头文件 #include&malloc.h& // malloc()等 #include&limits.h& // INT_MAX等 #include&stdio.h& // 标准输入输出头文件,包括EOF(=^Z或F6),NULL等 #include&stdlib.h& // atoi(),exit() #include&io.h& // eof() #include&math.h& // 数学函数头文件,包括floor(),ceil(),abs()等 #include&sys/timeb.h& // ftime() #include&stdarg.h& // 提供宏va_start,va_arg和va_end,用于存取变长参数表 // 函数结果状态代码。 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 // #define INFEASIBLE -1 没使用 // #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行 typedef int S // Status是函数的类型,其值是函数结果状态代码,如OK等 typedef int B // Boolean是布尔类型,其值是TRUE或FALSE,// c2-1.h 线性表的动态分配顺序存储结构。 #define LIST_INIT_SIZE 10 // 线性表存储空间的初始分配量 #define LIST_INCREMENT 2 // 线性表存储空间的分配增量 struct SqList { ElemType * // 存储空间基址 // 当前长度 // 当前分配的存储容量(以sizeof(ElemType)为单位) };// bo2-1.cpp 顺序存储的线性表(存储结构由c2-1.h定义)的基本操作(12个),包括算法2.3~2.6 void InitList(SqList &L) // 算法2.3 { // 操作结果:构造一个空的顺序线性表L
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem) // 存储分配失败
exit(OVERFLOW);
L.length=0; // 空表长度为0
L.listsize=LIST_INIT_SIZE; // 初始存储容量 } void DestroyList(SqList &L) { // 初始条件:顺序线性表L已存在。操作结果:销毁顺序线性表L
free(L.elem); // 释放L.elem所指的存储空间
L.elem=NULL; // L.elem不再指向任何存储单元
L.length=0;
L.listsize=0; } void ClearList(SqList &L) { // 初始条件:顺序线性表L已存在。操作结果:将L重置为空表
L.length=0; } Status ListEmpty(SqList L) { // 初始条件:顺序线性表L已存在。
// 操作结果:若L为空表,则返回TRUE;否则返回FALSE
if(L.length==0)
return TRUE;
return FALSE; } int ListLength(SqList L) { // 初始条件:顺序线性表L已存在。操作结果:返回L中数据元素的个数
return L. } Status GetElem(SqList L,int i,ElemType &e) { // 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)
// 操作结果:用e返回L中第i个数据元素的值
if(i&1||i&L.length) // i不在表L的范围之内
return ERROR;
e=*(L.elem+i-1); // 将表L的第i个元素的值赋给e
return OK; } int LocateElem(SqList L,ElemType e,Status(*compare)(ElemType,ElemType)) { // 初始条件:顺序线性表L已存在,compare()是数据元素判定函数(满足为1,否则为0)
// 操作结果:返回L中第1个与e满足关系compare()的数据元素的位序。
若这样的数据元素不存在,则返回值为0。算法2.6
int i=1; // i的初值为第1个元素的位序
ElemType *p=L. // p的初值为第1个元素的存储位置
while(i&=L.length&&!compare(*p++,e)) // i未超出表的范围且未找到满足关系的数据元素
++i; // 继续向后找
if(i&=L.length) // 找到满足关系的数据元素 // 返回其位序
else // 未找到满足关系的数据元素
return 0; } Status PriorElem(SqList L,ElemType cur_e,ElemType &pre_e) { // 初始条件:顺序线性表L已存在
// 操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱;
否则操作失败,pre_e无定义
int i=2; // 从第2个元素开始
ElemType *p=L.elem+1; // p指向第2个元素
while(i&=L.length&&*p!=cur_e) // i未超出表的范围且未找到值为cur_e的元素
{ p++; // p指向下一个元素
i++; // 计数加1
if(i&L.length) // 到表结束处还未找到值为cur_e的元素
return ERROR; // 操作失败
else // 找到值为cur_e的元素,并由p指向其
{ pre_e=*--p; // p指向前一个元素(cur_e的前驱),将所指元素的值赋给pre_e
return OK; // 操作成功
} } Status NextElem(SqList L,ElemType cur_e,ElemType &next_e) { // 初始条件:顺序线性表L已存在
// 操作结果:若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,
否则操作失败,next_e无定义
int i=1; // 从第1个元素开始
ElemType *p=L. // p指向第1个元素
while(i&L.length&&*p!=cur_e) // i未到表尾且未找到值为cur_e的元素
{ p++; // p指向下一个元素
i++; // 计数加1
if(i==L.length) // 到表尾的前一个元素还未找到值为cur_e的元素
return ERROR; // 操作失败
else // 找到值为cur_e的元素,并由p指向其
{ next_e=*++p; // p指向下一个元素(cur_e的后继),将所指元素的值赋给next _e
return OK; // 操作成功
} } Status ListInsert(SqList &L,int i,ElemType e) // 算法2.4 { // 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1
// 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1
ElemType *newbase,*q,*p;
if(i&1||i&L.length+1) // i值不合法
return ERROR;
if(L.length==L.listsize) // 当前存储空间已满,增加分配,修改
{ newbase=(ElemType*)realloc(L.elem,(L.listsize+LIST_INCREMENT)*sizeof(ElemType));
if(!newbase) // 存储分配失败
exit(OVERFLOW);
L.elem= // 新基址赋给L.elem
L.listsize+=LIST_INCREMENT; // 增加存储容量
q=L.elem+i-1; // q为插入位置
for(p=L.elem+L.length-1;p&=q;--p) // 插入位置及之后的元素右移(由表尾元素开始移)
*(p+1)=*p;
*q=e; // 插入e
++L. // 表长增1
return OK; } Status ListDelete(SqList &L,int i,ElemType &e) // 算法2.5 { // 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)
// 操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1
ElemType *p,*q;
if(i&1||i&L.length) // i值不合法
return ERROR;
p=L.elem+i-1; // p为被删除元素的位置
e=*p; // 被删除元素的值赋给e
q=L.elem+L.length-1; // q为表尾元素的位置
for(++p;p&=q;++p) // 被删除元素之后的元素左移(由被删除元素的后继元素开始移)
*(p-1)=*p;
L.length--; // 表长减1
return OK; } void ListTraverse(SqList L,void(*visit)(ElemType&)) { // 初始条件:顺序线性表L已存在
// 操作结果:依次对L的每个数据元素调用函数visit()
visit()的形参加'&',表明可通过调用visit()改变元素的值
ElemType *p=L. // p指向第1个元素
for(i=1;i&=L.i++) // 从表L的第1个元素到最后1个元素
visit(*p++); // 对每个数据元素调用visit()
printf(&\n&); }// func2-2.cpp 几个常用的函数 Status equal(ElemType c1,ElemType c2) { // 判断是否相等的函数
if(c1==c2)
return TRUE;
return FALSE; } int comp(ElemType a,ElemType b) { // 根据a&、=或&b,分别返回-1、0或1
return (a-b)/abs(a-b); } void print(ElemType c) { // 以十进制整型的格式输出元素的值
printf(&%d &,c); } void print1(ElemType &c) { // 以十进制整型的格式输出元素的值(设c为引用类型)
printf(&%d &,c); } void print2(ElemType c) { // 以字符型的格式输出元素的值
printf(&%c &,c); }// main2-1.cpp 检验bo2-1.cpp的主程序 #include&c1.h& typedef int ElemT // 定义ElemType为整型 #include&c2-1.h& // 线性表的顺序存储结构 #include&bo2-1.cpp& // 线性表顺序存储结构的基本操作 #include&func2-2.cpp& // 包括equal()、comp()、print()、print1()和print2()函数 Status sq(ElemType c1,ElemType c2) { // 数据元素判定函数(平方关系),LocateElem()调用的函数
if(c1==c2*c2)
return TRUE;
return FALSE; } void dbl(ElemType &c) { // ListTraverse()调用的另一函数(元素值加倍)
c*=2; } void main() {
ElemType e,e0;
InitList(L); // 初始化线性表L
printf(&初始化L后,L.length=%d,L.listsize=%d,L.elem=%u\n&,L.length,
L.listsize,L.elem);
for(j=1;j&=5;j++)
i=ListInsert(L,1,j); // 在L的表头插入j
printf(&在L的表头依次插入1~5后,*L.elem=&);
for(j=1;j&=5;j++)
printf(&%d &,*(L.elem+j-1)); // 依次输出表L中的元素
printf(&\n调用ListTraverse()函数,依次输出表L中的元素:&);
ListTraverse(L,print1); // 依次对表L中的元素调用print1()函数(输出元素的值)
i=ListEmpty(L); // 检测表L是否空
printf(&L.length=%d(改变),L.listsize=%d(不变),&,L.length,L.listsize);
printf(&L.elem=%u(不变),L是否空?i=%d(1:是 0:否)\n&,L.elem,i);
ClearList(L); // 清空表L
i=ListEmpty(L); // 再次检测表L是否空
printf(&清空L后,L.length=%d,L.listsize=%d,&,L.length,L.listsize);
printf(&L.elem=%u,L是否空?i=%d(1:是 0:否)\n&,L.elem,i);
for(j=1;j&=10;j++)
ListInsert(L,j,j); // 在L的表尾插入j
printf(&在L的表尾依次插入1~10后,L=&);
ListTraverse(L,print1); // 依次输出表L中的元素
printf(&L.length=%d,L.listsize=%d,L.elem=%u\n&,L.length,L.listsize,L.elem);
ListInsert(L,1,0); // 在L的表头插入0,增加存储空间
printf(&在L的表头插入0后,L.length=%d(改变),L.listsize=%d(改变),&
&L.elem=%u(有可能改变)\n&,L.length,L.listsize,L.elem);
GetElem(L,5,e); // 将表L中的第5个元素的值赋给e
printf(&第5个元素的值为%d\n&,e);
for(j=10;j&=11;j++)
{ k=LocateElem(L,j,equal); // 查找表L中与j相等的元素,并将其位序赋给k
if(k) // k不为0,表明有符合条件的元素
printf(&第%d个元素的值为%d,&,k,j);
else // k为0,没有符合条件的元素
printf(&没有值为%d的元素\n&,j);
for(j=3;j&=4;j++) // 测试2个数据
{ k=LocateElem(L,j,sq); // 查找表L中与j的平方相等的元素,并将其位序赋给k
if(k) // k不为0,表明有符合条件的元素
printf(&第%d个元素的值为%d的平方,&,k,j);
else // k为0,没有符合条件的元素
printf(&没有值为%d的平方的元素\n&,j);
for(j=1;j&=2;j++) // 测试头2个数据
{ GetElem(L,j,e0); // 将表L中的第j个元素的值赋给e0
i=PriorElem(L,e0,e); // 求e0的前驱,如成功,将值赋给e
if(i==ERROR) // 操作失败
printf(&元素%d无前驱,&,e0);
else // 操作成功
printf(&元素%d的前驱为%d\n&,e0,e);
for(j=ListLength(L)-1;j&=ListLength(L);j++) // 最后2个数据
{ GetElem(L,j,e0); // 将表L中的第j个元素的值赋给e0
i=NextElem(L,e0,e); // 求e0的后继,如成功,将值赋给e
if(i==ERROR) // 操作失败
printf(&元素%d无后继\n&,e0);
else // 操作成功
printf(&元素%d的后继为%d,&,e0,e);
k=ListLength(L); // k为表长
for(j=k+1;j&=k;j--)
{ i=ListDelete(L,j,e); // 删除第j个数据
if(i==ERROR) // 表中不存在第j个数据
printf(&删除第%d个元素失败。&,j);
else // 表中存在第j个数据,删除成功,其值赋给e
printf(&删除第%d个元素成功,其值为%d&,j,e);
ListTraverse(L,dbl); // 依次对元素调用dbl(),元素值乘2
printf(&L的元素值加倍后,L=&);
ListTraverse(L,print1); // 依次输出表L中的元素
DestroyList(L); // 销毁表L
printf(&销毁L后,L.length=%d,L.listsize=%d,L.elem=%u\n&,L.length,
L.listsize,L.elem); }
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁余腊中,数据结构c++版,第2章算法分析与算法设计4_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者贡献于
评价文档:
42页免费56页免费109页免费97页免费11页免费 78页免费10页免费48页免费3页免费30页免费
余腊中,数据结构c++版,第2章算法分析与算法设计4|余​腊​中​,​数​据​结​构​c​+​+​版​,​中​南​大​学
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:1.74MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢}

我要回帖

更多关于 返回值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信