设从键盘输入整数序列a1a2an请编

2020-11-18 11:36:10 字数 5948 阅读 1113

1楼:匿名用户

#include

int stack[100],p; //定义堆栈 p为栈顶指针

int n,a;

int main()

else

}return 0;}

编写程序求:给出一个整数n,一个数组{a1,a2,...,an},将n表示成数组中若干项的和,写出所有的可能。

2楼:匿名用户

递归就可以解决,给你写个递归式吧;调用方法如下int a[6]=;

int chose[6]=;

de***pose( a,5,0,10,chose,0);

void print( int *chose , int n )//参数分别是,背包数组,数组最大下标,当前选到的第k个元素,要求解的和,已选的结果,已选结果的下标

void de***pose( int *array , int max , int k , int subn , int *chose , int c )

for( int i = k ; i <= max ; ++i )}

3楼:匿名用户

程序我就不写了,麻烦,思路:所有数相加为n,所有数-1相加为n,知道a为 n,取值即可。

4楼:匿名用户

先排序,如果n比较小,暴力搜索。如果n比较大,用回溯法可以

有个java程序设计的题,求答案 试写一算法,实现顺序表元素的逆置,即 ( a1,a2,…,an ) 逆置为 ( an,an-1,

5楼:匿名用户

使用倒置循环输出即可for(int i=n,i>0,i--),这个是投机取巧的!你只说是倒置而已,没有顺序的

6楼:匿名用户

import java.util.list;

import java.util.arraylist;

public class inversionlist {public list getinversionlist(arraylist list){

编写程序,实现从键盘输入一个正整数,输出该正整数的位数。

7楼:阳光上的桥

什么语言,c吗,c这样写:

scanf("%d",&x);

n=0;

while(x)

8楼:万里云菲千里

/* 写程序用输出一个由用户输入的正整数的位数,例如26的位数为2;2341的位数为4。*/#include "stdio.h"

void main()

printf("sum是%d位数\n",i);

}正确的

数据结构栈和数列题目 50

9楼:匿名用户

=p->next->next;

2、b 用链表的话,可以动态分配空间,因此只要考虑是否为空,不会出现满的情况。

3、a 此题目是求子串的问题,意思是求主串第5个开始长度为9的子串

4、b 其实b***括了c和d答案,搞清先序、后序的概念应该不难。

5、b 此题相当一个等比数列,1+3+9+27=40 和完全三叉树的概念

1、2n, n+1 此题考的是线索二叉树部分,其中除根结点外所有的结点都必须用指针域连接,应该用到n-1所以当然有n+1个没有被用到。

2、cba 其实这个题目和前面的那个选择题相似,画出二叉树就只有右孩子的二叉树

3、i=i+1, j=0; 就是子符串的朴素算法

4、abcde为层序,画链式很简单,先序:abdec,中序:dbeac后序:debca

5、方程1:n0+n1+n2=n 方程2:n1+2*n2=n-1 得n2=n0-1, 这一问和上面一样同样是n-1个,但是此处应该写成:2*n0+n1-1

6、最少为深度k-1的树再加一个 即:2^(k-1)

7、和前面一样

8、以2为底的log128求整数就行,第二问,三个方程解三个未知数,

方程1:n0+n1+n2=128 方程2:n1+2*n2=128-1 方程3:n1=1 (对于完全二叉树且128为偶数)

9、先画出来,再写,答案:debca

有一个线性表(a1,a2,...,an),采用带头结点的单链表l存储.设计一算法将其就地逆置.............急急急

10楼:匿名用户

#include "stdio.h"

#include "string.h"

#include "ctype.h"

#include "stdlib.h"

#include "io.h"

#include "math.h"

#include "time.h"

#define ok 1

#define error 0

#define true 1

#define false 0

#define maxsize 20 /* 存储空间初始分配量 */

typedef int status;/* status是函数的类型,其值是函数结果状态**,如ok等 */typedef int elemtype;/* elemtype类型根据实际情况而定,这里假设为int */

status visit(elemtype c)

typedef struct node

node;

typedef struct node *linklist; /* 定义linklist */

/* 初始化顺序线性表 */

status initlist(linklist *l)

/* 初始条件:顺序线性表l已存在。操作结果:若l为空表,则返回true,否则返回false */

status listempty(linklist l)

/* 初始条件:顺序线性表l已存在。操作结果:将l重置为空表 */

status clearlist(linklist *l)

(*l)->next=null; /* 头结点指针域为空 */

return ok;

}/* 初始条件:顺序线性表l已存在。操作结果:返回l中数据元素个数 */

int listlength(linklist l)

return i;

}/* 初始条件:顺序线性表l已存在,1≤i≤listlength(l) */

/* 操作结果:用e返回l中第i个数据元素的值 */

status getelem(linklist l,int i,elemtype *e)

if ( !p || j>i )

return error; /* 第i个元素不存在 */

*e = p->data; /* 取第i个元素的数据 */

return ok;

}/* 初始条件:顺序线性表l已存在 */

/* 操作结果:返回l中第1个与e满足关系的数据元素的位序。 */

/* 若这样的数据元素不存在,则返回值为0 */

int locateelem(linklist l,elemtype e)

return 0;}

/* 初始条件:顺序线性表l已存在,1≤i≤listlength(l), */

/* 操作结果:在l中第i个位置之前插入新的数据元素e,l的长度加1 */

status listinsert(linklist *l,int i,elemtype e)

if (!p || j > i)

return error; /* 第i个元素不存在 */

s = (linklist)malloc(sizeof(node)); /* 生成新结点(c语言标准函数) */

s->data = e;

s->next = p->next; /* 将p的后继结点赋值给s的后继 */

p->next = s; /* 将s赋值给p的后继 */

return ok;

}/* 初始条件:顺序线性表l已存在,1≤i≤listlength(l) */

/* 操作结果:删除l的第i个数据元素,并用e返回其值,l的长度减1 */

status listdelete(linklist *l,int i,elemtype *e)

if (!(p->next) || j > i)

return error; /* 第i个元素不存在 */

q = p->next;

p->next = q->next; /* 将q的后继赋值给p的后继 */

*e = q->data; /* 将q结点中的数据给e */

free(q); /* 让系统**此结点,释放内存 */

return ok;

}/* 初始条件:顺序线性表l已存在 */

/* 操作结果:依次对l的每个数据元素输出 */

status listtraverse(linklist l)

printf("\n");

return ok;

}/* 随机产生n个元素的值,建立带表头结点的单链线性表l(头插法) */

void createlisthead(linklist *l, int n)

}/* 随机产生n个元素的值,建立带表头结点的单链线性表l(尾插法) */

void createlisttail(linklist *l, int n)

r->next = null; /* 表示当前链表结束 */

}int main()

k=listlength(l); /* k为表长 */

for(j=k+1;j>=k;j--)

printf("依次输出l的元素:");

listtraverse(l);

j=5;

listdelete(&l,j,&e); /* 删除第5个数据 */

printf("删除第%d个的元素值为:%d\n",j,e);

printf("依次输出l的元素:"); listtraverse(l);

i=clearlist(&l);

printf("\n清空l后:listlength(l)=%d\n",listlength(l));

createlisthead(&l,20);

printf("整体创建l的元素(头插法):");

listtraverse(l);

i=clearlist(&l);

printf("\n删除l后:listlength(l)=%d\n",listlength(l));

createlisttail(&l,20);

printf("整体创建l的元素(尾插法):");

listtraverse(l);

return 0;}

11楼:等你爱你惜你

#include

#include

typedef int elemtype;

typedef struct node

lnode,* linklist;

linklist initlist(linklist l);//申请节点空间

linklist input(linklist l);//用于输入数据

void prinlink(linklist l);//输出数据void reverse(linklist l);//逆置链表main()

linklist initlist(linklist l)//申请节点空间

linklist input(linklist l)//输入数据return l;//返回链表

}void prinlink(linklist l)//打印链表}void reverse(linklist l)//逆置链表}