实验 二 栈和队列的基本操作实现及其应用
更新时间:2024-01-14 05:41:01 阅读量: 教育文库 文档下载
软件114班李大宝 201100834416
数 据 结 构 实 验 报 告
(二) 姓名: 李 大 宝 学院:计算机学院 班级:软件114班
第1页
软件114班李大宝 201100834416
实验 二 栈和队列的基本操作实现及其应用 一、实验目的
1、熟练掌握栈和队列的基本操作在两种存储结构上的实现。 2、会用栈和队列解决简单的实际问题。
二、实验内容
题目一
试写一个算法,判断依次读入的一个以@为结束符的字符序列,是否为回文。所谓“回文“是指正向读和反向读都一样的一字符串,如“321123”或“ableelba”。
一、相关常量及结构定义:
# define STACK_INIT_SIZE 100 # define STACKINCREMENT 10 # define OK 1 # define ERROR 0
typedefcharSElemType; //把char类型定义为SElemType //栈类型定义
typedefstructSqStack
{ SElemType *base; //栈底
SElemType *top; //栈顶 intstacksize; //最大容量 }SqStack;
//队列类型定义
typedefstructQNode {
SElemType data; structQNode *next; }QNode,*QueuePtr; typedefstruct {
QueuePtr front; //队首 QueuePtr rear; //队尾 }LinkQueue;
二、设计相关函数声明: 判断函数:
intIsReverse()
栈:
intInitStack(SqStack&S )
int Push(SqStack&S, SElemType e ) int Pop(SqStack&S,SElemType&e) intStackEmpty(s)
队列;
第2页
软件114班李大宝 201100834416
intinitqueue(LinkQueue&Q)
intEnQueue(LinkQueue&Q,SElemType e) intDeQueue(LinkQueue&Q,SElemType&e)
三、函数说明: 1、栈初始化 /*
函数功能:对栈进行初始化 参数:栈(SqStack&S)
成功初始化返回1,否则返回0 */
intInitStack(SqStack&S) {
S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); //对栈申请空间。 if(!S.base)
exit(0); //未申请空间退出。 S.top=S.base;
S.stacksize=STACK_INIT_SIZE; return OK; }
2、弹出栈顶元素,并返回 /*
函数功能:对栈删除栈顶元素
参数:栈SqStack&S, 元素SElemType&e 用e返回栈顶元素 */
int Pop(SqStack&S,SElemType&e) {
if(S.top==S.base) //栈为空时返回错误。 return ERROR;
e=*--S.top; //成功返回栈顶元素 return OK; }
3、向栈中压入元素 /*
函数功能:向栈中压入元素
参数:栈SqStack&S, 元素SElemTypee
成功压入返回1,否则返回0 */
int Push(SqStack&S,SElemType e) {
if(S.top-S.base>=S.stacksize) //栈的大小过小时,从新申请内存 {
S.base=(SElemType
*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType)); if(!S.base) exit(0);
S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; }
*S.top++ = e; //成功压入元素。
第3页
软件114班李大宝 201100834416
return OK; }
4、栈是否为空 /*
函数功能:判断栈是否为空 参数:栈SqStackS
为空返回1,否则返回0 */
intStackEmpty(SqStack S) {
if(S.top==S.base) //为空条件S.top=S.base return OK; else
return ERROR; //不空返回0 }
5、队列初始化 /*
函数功能:对队列进行初始化 参数:队列(LinkQueue&Q)
成功初始化返回1,否则返回0 */
intinitqueue(LinkQueue&Q) {
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode)); if(!Q.front) exit(ERROR); Q.front->next=NULL; return OK; }
6、入队 /*
函数功能:对队列进行入队
参数:队列LinkQueue&Q,元素SElemType e 成功入栈返回1 */
intEnQueue(LinkQueue&Q,SElemType e) {
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));//对p申请内存 if(!p)
exit(ERROR); //未申请到内存退出 p->data=e; p->next=NULL;
if(Q.rear==NULL) //队列为空时 {
Q.front->next=p; Q.rear=p; }
Else //队列不为空时 {
第4页
软件114班李大宝 201100834416
Q.rear->next=p;
Q.rear=p; //在队尾入栈 }
return OK;
}
7、出队 /*
函数功能:对队列进行出队
参数:队列LinkQueue&Q,元素SElemType&e 用元素e将队首元素进行返回 成功出栈返回1 */
intDeQueue(LinkQueue&Q,SElemType&e) {
if(Q.front==Q.rear)
return ERROR; //队空 QueuePtr p;
p=Q.front->next;
e=p->data; //队首元素 Q.front->next=p->next;
if(Q.rear==p) //p为最后一个元素时 Q.rear=Q.front;
free(p); //释放p节点 return OK; }
8、判断函数: /*
函数功能:判断字符串是否是回文字符串 参数:栈SqStack S,队列LinkQueue&Q
如果是回文字符串返回1,否则返回0 */
intIsReverse(SqStackS,LinkQueue Q) {
SElemTypea,b;
while(!StackEmpty(S)) //栈不为空时 {
Pop(S,a); DeQueue(Q,b);
if(a!=b) //栈顶元素与队首元素进行比较,不相等返回0 return 0; }
return 1; //栈与队列相同返回1,即字符串为回文字符串。 }
三、主函数设计
int main() {
char YES; //用来存放字符 do {
SElemType e; SqStack S;
第5页
软件114班李大宝 201100834416
}
LinkQueue Q;
InitStack(S); //初始化栈 initqueue(Q); //初始化队列
cout<<\请输入字符串以'@'结尾!\
while((e=getchar())!='@') //输入以@结束。 {
Push(S,e); //入栈 EnQueue(Q,e); //入队 }
if(IsReverse(S,Q)==1)//判断返回是否为1,为1就是回文字符串 cout<<\此字符串是回文字符串\ else
cout<<\此字符串不是回文字符串\ cout<<\是否继续,继续(y/Y),其他键退出\ cin>>YES;
getchar(); //getchar()接收缓冲区本来保存的东西 }while(YES=='y'||YES=='Y'); return 0;
四、程序调试及运行结果分析
程序完美运行。 特别注意: cin>>YES; getchar();
这里很容易出错getchar()是用来做缓冲。用getchar()接收缓冲区本来保存的东西
程序运行结果如下:
五、实验总结
通过这次试验我熟悉了对栈和队列的基本操作,对基本的栈和队列操作有了
第6页
软件114班李大宝 201100834416
很好的掌握,知道自己容易在什么地方出错。 六、程序清单
#include
# define STACK_INIT_SIZE 100 # define STACKINCREMENT 10 # define OK 1 # define ERROR 0
typedef char SElemType; typedefstructSqStack {
SElemType *base; SElemType *top; intstacksize; }SqStack;
typedefstructQNode {
SElemType data; structQNode *next; }QNode,*QueuePtr; typedefstruct {
QueuePtr front; QueuePtr rear; }LinkQueue;
intInitStack(SqStack&S) {
S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!S.base) exit(0); S.top=S.base;
S.stacksize=STACK_INIT_SIZE; return OK; }
int Pop(SqStack&S,SElemType&e) {
if(S.top==S.base) return ERROR; e=*--S.top; return OK; }
int Push(SqStack&S,SElemType e) {
if(S.top-S.base>=S.stacksize) {
S.base=(SElemType
*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType)); if(!S.base)
第7页
软件114班李大宝 201100834416
exit(0);
S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; }
*S.top++ = e; return OK; }
intStackEmpty(SqStack S) {
if(S.top==S.base) return OK; else
return ERROR; }
intinitqueue(LinkQueue&Q) {
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode)); if(!Q.front) exit(ERROR); Q.front->next=NULL; return OK; }
intEnQueue(LinkQueue&Q,SElemType e) {
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode)); if(!p)
exit(ERROR); p->data=e; p->next=NULL; if(Q.rear==NULL) {
Q.front->next=p; Q.rear=p; } else {
Q.rear->next=p; Q.rear=p; }
return OK; }
intDeQueue(LinkQueue&Q,SElemType&e) {
if(Q.front==Q.rear) return ERROR; QueuePtr p;
p=Q.front->next; e=p->data;
Q.front->next=p->next; if(Q.rear==p)
第8页
软件114班李大宝 201100834416
Q.rear=Q.front; free(p); return OK; }
intIsReverse(SqStackS,LinkQueue Q) {
SElemTypea,b;
while(!StackEmpty(S)) {
Pop(S,a); DeQueue(Q,b); if(a!=b)
return 0; }
return 1; }
int main() {
char YES; do {
SElemType e; SqStack S; LinkQueue Q; InitStack(S); initqueue(Q);
cout<<\请输入字符串以'@'结尾!\ while((e=getchar())!='@') {
Push(S,e); EnQueue(Q,e); }
if(IsReverse(S,Q)==1)
cout<<\此字符串是回文字符串\ else
cout<<\此字符串不是回文字符串\ cout<<\是否继续,继续(y/Y),其他键退出\ cin>>YES;
getchar(); //表示缓冲字符YES; }while(YES=='y'||YES=='Y'); return 0; }
STL标准模板库程序:
#include
第9页
软件114班李大宝 201100834416
queue
while(!s.empty()) {
if(s.top()!=q.front()) return 0; s.pop(); q.pop(); } return 1; }
int main() {
char YES; do {
cout<<\请输入字符串以'@'结尾!\ char e;
while((e=getchar())!='@') {
s.push(e); q.push(e); }
getchar();
if(IsReverse()==1)
cout<<\此字符串是回文字符串\ else
cout<<\此字符串不是回文字符串\ while(!s.empty()) s.pop(); while(!q.empty()) q.pop();
cout<<\是否继续,继续(y/Y),其他键退出\ cin>>YES; getchar();
}while(YES=='y'||YES=='Y'); }
题目二
编程模拟队列的管理,主要包括:出队列、入队、统计队列的长度、查找队列某个元素e、及输出队列中元素。
[实现提示]:参考教材循环队列的有关算法,其中后两个算法参考顺序表的实现。
第10页
软件114班李大宝 201100834416
一、相关结构定义
#define elemtypeint //定义int为elemtype类型 typedefstruct STD {
elemtype data; struct STD *next; }Qnode,*Queueptr; typedefstruct {
Queueptr front; //队首 Queueptr rear; //队尾 int count; }linkqueue;
二、函数说明: 1、初始化队列 /*
函数功能:对队列进行初始化 参数:队列(linkqueue&Q)
成功初始化返回1,否则返回0 */
intinit(linkqueue&Q) {
Q.front=Q.rear=(Queueptr)malloc(sizeof(Qnode)); //对队列申请空间。 if(!Q.front)
exit(0); //未申请空间退出。 Q.front->next=NULL; Q.count=0; return 1; }
2.出队 /*
函数功能:对队列进行出队
参数:队列linkqueue&Q,元素elemType&e 成功出栈返回1 */
intdequeue(linkqueue&Q) {
Queueptr p;
if(Q.front==Q.rear) //队空 return 0; p=Q.front->next;
Q.front->next=p->next;
if(Q.rear==p) //p为最后一个元素时 Q.rear=Q.front;
free(p); //释放p节点 Q.count--; //队长度减1 return 1; }
3.入队 /*
第11页
软件114班李大宝 201100834416
函数功能:对队列进行入队
参数:队列linkqueue&Q,元素elemType e 成功入栈返回1 */
intenqueue(linkqueue&Q,elemtype e) {
Queueptr p;
p=(Queueptr)malloc(sizeof(Qnode)); //对p申请内存 if(!p)
exit(0); //未申请到内存退出 p->data=e; p->next=NULL;
if(Q.front==NULL) //队列为空时 {
Q.front->next=p; Q.rear=p; }
Else//队列不为空时 {
Q.rear->next=p;
Q.rear=p;//在队尾入栈 }
Q.count++; //长度加1。 return 1; }
4.长度 /*
函数功能:返回队列的长度 参数:队列linkqueueQ
返回Q.count */
int length(linkqueue Q) {
return Q.count; //队列的长度 }
5.查找 /*
函数功能:在队列中查找元素
参数:队列linkqueueQ,元素elemtype e 找到返回1,否则返回0 */
int find(linkqueueQ,elemtype e) {
Queueptr p;
p=Q.front->next; while(p) {
if(p->data==e) //找到元素e返回1 return 1; p=p->next; }
第12页
软件114班李大宝 201100834416
return 0; //找不到元素e返回0 }
6.显示 /*
函数功能:显示队列中所有元素 参数:队列linkqueueQ
无返回值 */
void show(linkqueue Q) {
Queueptr p;
p=Q.front->next;
while(p) //队列元素不为空时 {
cout<
cout< 7.主界面 /* 函数功能:操作主界面 参数:无 无返回值 */ voidzhujiemian() { cout< //选择数字序号进行不同的操作 } 三、主函数设计 int main() { linkqueue Q; inta,b,c; zhujiemian(); cin>>a; while(a!=1) //第一步一定要对队列初始化 { cout<<\输入错误,必须先初始化,请重新输入:\ cin>>a; } cout< 第13页 软件114班李大宝 201100834416 } { switch(a) { case 1: if(init(Q)==1) cout<<\初始化成功!\ else cout<<\初始化失败!\ break; case 2: if(length(Q)==0) { cout<<\队列为空无法出队!\ break; } if(dequeue(Q)==1) cout<<\删除成功!\ else cout<<\删除失败!\ break; case 3: cout<<\输入你要入队元素\ cin>>c; if(enqueue(Q,c) ==1) cout<<\入队成功!\ else cout<<\入队失败!\ break; case 4: b=length(Q); cout<<\队列的长度为:\ break; case 5: cout<<\您要查找的元素:\ cin>>b; if(find(Q,b)==1) cout<<\恭喜您,队列中有您要找的元素\ else cout<<\不好意思,队列中没有您要找的元素\ break; case 6: if(length(Q)==0) { cout<<\队列为空!\ break; } show(Q); break; default: break; } system(\按任意键继续 system(\清屏 zhujiemian(); cin>>a; cout< }while(a>0&&a<=6); //判断输入的a是否在1-6之间。 return 0; 第14页 软件114班李大宝 201100834416 四、程序调试及运行结果分析 运行主界面: 操作界面清晰,方便操作。 入队: 出队: 当队列为空时不会出现错误。 第15页 软件114班李大宝 201100834416 查找: 五、实验总结 通过这个实验我明白了队列的基本操作,和熟练掌握了队列的基本实现。通过这次实验我懂得了关于队列该如何操作。 六、程序清单 #include 第16页 软件114班李大宝 201100834416 using namespace std; #define elemtypeint typedefstruct STD { elemtype data; struct STD *next; }Qnode,*Queueptr; typedefstruct { Queueptr front; Queueptr rear; int count; }linkqueue; intinit(linkqueue&Q) { Q.front=Q.rear=(Queueptr)malloc(sizeof(Qnode)); if(!Q.front) exit(0); Q.front->next=NULL; Q.count=0; return 1; } intdequeue(linkqueue&Q) { Queueptr p; if(Q.front==Q.rear) return 0; p=Q.front->next; Q.front->next=p->next; if(Q.rear==p) Q.rear=Q.front; free(p); Q.count--; return 1; } intenqueue(linkqueue&Q,elemtype e) { Queueptr p; p=(Queueptr)malloc(sizeof(Qnode)); if(!p) exit(0); p->data=e; p->next=NULL; if(Q.front==NULL) { Q.front->next=p; Q.rear=p; } else { Q.rear->next=p; 第17页 软件114班李大宝 201100834416 Q.rear=p; } Q.count++; return 1; } int length(linkqueue Q) { returnQ.count; } int find(linkqueueQ,elemtype e) { Queueptr p; p=Q.front->next; while(p) { if(p->data==e) return 1; p=p->next; } return 0; } void show(linkqueue Q) { Queueptr p; p=Q.front->next; while(p) { cout< cout< voidzhujiemian() { cout< cout<<\数据结构实验二\ cout<<\ cout<<\队列初始化\ cout<<\出队列\ cout<<\入队列\ cout<<\队列长度\ cout<<\在队列中查找元素\ cout<<\遍历队列\ cout<<\其他键退出\ cout<<\l; cout<<\请选择要进行操作的序号(1--6):\} int main() { linkqueue Q; 第18页 软件114班李大宝 201100834416 inta,b,c; zhujiemian(); cin>>a; while(a!=1) { cout<<\输入错误,必须先初始化,请重新输入:\ cin>>a; } cout< switch(a) { case 1: if(init(Q)==1) cout<<\初始化成功!\ else cout<<\初始化失败!\ break; case 2: if(length(Q)==0) { cout<<\队列为空无法出队!\ break; } if(dequeue(Q)==1) cout<<\删除成功!\ else cout<<\删除失败!\ break; case 3: cout<<\输入你要入队元素\ cin>>c; if(enqueue(Q,c) ==1) cout<<\入队成功!\ else cout<<\入队失败!\ break; case 4: b=length(Q); cout<<\队列的长度为:\ break; case 5: cout<<\您要查找的元素:\ cin>>b; if(find(Q,b)==1) cout<<\恭喜您,队列中有您要找的元素\ else cout<<\不好意思,队列中没有您要找的元素\ break; case 6: 第19页 软件114班李大宝 201100834416 } if(length(Q)==0) { cout<<\队列为空!\ break; } show(Q); break; default: break; } system(\ system(\ zhujiemian(); cin>>a; cout< 题目三、Rails Description There is a famous railway station in PopPush City. Country there is incredibly hilly. The station was built in last century. Unfortunately, funds were extremely limited that time. It was possible to establish only a surface track. Moreover, it turned out that the station could be only a dead-end one (see picture) and due to lack of available space it could have only one track. The local tradition is that every train arriving from the direction A continues in the direction B with coaches reorganized in some way. Assume that the train arriving from the direction A has N <= 1000 coaches numbered in increasing order 1, 2, ..., N. The chief for train reorganizations must know whether it is possible to marshal coaches continuing in the direction B so that their order will be a1, a2, ..., aN. Help him and write a program that decides whether it is possible to get the required order of coaches. You can assume that single coaches can be disconnected from the train before they enter the station and that they can move themselves until they are on the track in the direction B. You can also suppose that at any time there can be located as many coaches as necessary in the station. But once a coach has entered the station it cannot return to the track in the direction A and also once it has left the station in the direction B it cannot return back to the 第20页 软件114班李大宝 201100834416 station. Input The input consists of blocks of lines. Each block except the last describes one train and possibly more requirements for its reorganization. In the first line of the block there is the integer N described above. In each of the next lines of the block there is a permutation of 1, 2, ..., N. The last line of the block contains just 0. The last block consists of just one line containing 0. Output The output contains the lines corresponding to the lines with permutations in the input. A line of the output contains Yes if it is possible to marshal the coaches in the order required on the corresponding line of the input. Otherwise it contains No. In addition, there is one empty line after the lines corresponding to one block of the input. There is no line in the output corresponding to the last ``null'' block of the input. Sample Input 5 1 2 3 4 5 5 4 1 2 3 0 6 6 5 4 3 2 1 0 0 Sample Output Yes No Yes 程序清单:(STL标准模板库) 一、 #include using namespace std; int a[1001],n,i,j; int fan() { stack for(i=0,j=1;i if(s.empty()||s.top()!=a[i])//栈空或栈顶元素不与a[i]相同时进站 { if(j==(n+1)) //不能正常出站条件 return 0; //不能正常出站返回0 第21页 软件114班李大宝 201100834416 s.push(j++); //将j压入栈中 } else //栈顶元素与a[i]相同时进站 { s.pop(); //弹出栈顶元素 i++; //i++,a的下个元素继续进行 } } return 1; } /* fan()解释: 1--n和a[n]的每个元素进行比较。 用j=1,j++表示1—n的每个元素 用a[i](0<=i 如果栈顶元素与a[i]不相同,让j进栈,然后j++。 如果栈顶元素与a[i]相同,弹出栈顶元素,然后i++。 结束条件:1、j=(n+1)时表示不能按给出的顺序出站,则返回0 2、循环结束返回1 */ int main() { while(scanf(\有多少辆火车,以0结束。 { while(scanf(\ //输入出站次序,以0结束 { for(i=1;i scanf(\ //把出站次序放在数组a中。 if(fan()) printf(\ //可以出站输出Yes else printf(\ //不可以正常出站输出No } } return 0; } 运行结果: 第22页 软件114班李大宝 201100834416 二、 #include using namespace std; int a[1001],n,i,j,k; int fan() { stack for(i=1;i<=n;i++) { if(a[j]==i) //当a[j]与i相同时 { j++; //进行下一个a中的元素 while(!s.empty())//栈不空时 { k=s.top(); //得到栈顶元素 s.pop(); //弹出栈顶元素 if(k==a[j]) //栈顶元素与a[j]相同,继续进行下一个 j++; else //栈顶元素与a[j]不同时 { s.push(k); //把k再压入栈中 break; //if语句结束。 第23页 软件114班李大宝 201100834416 } } } else //当a[j]与i不相同时把i压入栈中 s.push(i); } if(s.empty()) //栈空返回1 return 1; else //栈不空返回0 return 0; } int main() { while(scanf(\ { while(scanf(\ { for(i=1;i printf(\else printf(\ } } return 0; } /* 主要解释一下fan() 1--n和a[n]的每个元素进行比较。 用i=1,i++表示1—n的每个元素 用a[j](0<=j 当a[j]与i相同时,j++,让栈顶元素继续与a[j]比较,直到a[j]与栈顶元素不同 当a[j]与i相同时将i压入栈中。 结束条件:1、最后栈空,返回1(可以按所给的顺序出站) 2、栈不空,返回0(不可以按所给的顺序出站) */ 题目四、Sliding Window Description An array of size n ≤ 106 is given to you. There is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves rightwards by one position. Following is an example: The array is [1 3 -1 -3 5 3 6 7], and k is 3. 第24页 软件114班李大宝 201100834416 Minimum value Maximum value [1 3 -1] -3 5 3 6 7 -1 3 1 [3 -1 -3] 5 3 6 7 1 3 [-1 -3 5] 3 6 7 1 3 -1 [-3 5 3] 6 7 1 3 -1 -3 [5 3 6] 7 1 3 -1 -3 5 [3 6 7] -3 -3 -3 3 3 3 5 5 6 7 Window position Your task is to determine the maximum and minimum values in the sliding window at each position. Input The input consists of two lines. The first line contains two integers n and k which are the lengths of the array and the sliding window. There are n integers in the second line. Output There are two lines in the output. The first line gives the minimum values in the window at each position, from left to right, respectively. The second line gives the maximum values. Sample Input 8 3 1 3 -1 -3 5 3 6 7 Sample Output -1 -3 -3 -3 3 3 3 3 5 5 6 7 程序清单: #include #include //*min_element(),*max_element()所包含头文件 using namespace std; int main() { intn,k,i,a[1001],min[1000],max[1000]; //a[1001]存放输入数据,min[1000]存放最小值,max[1000]存放最大值 while(scanf(\输入到文件结尾结束。 { for(i=0;i scanf(\ //也可以写出scanf(\for(i=0;i<=n-k;i++) { min[i]=*min_element(a+i,a+i+k); //求一个范围段的最小值,保存在数组min[1000]中 max[i]=*max_element(a+i,a+i+k); //求一个范围段的最大值,保存在数组max[1000]中 } 第25页 软件114班李大宝 201100834416 for(i=0;i<=n-k;i++) //输出最小值。 printf(\printf(\ for(i=0;i<=n-k;i++) //输出最大值。 printf(\printf(\ } return 0; } 运行结果: 第26页 软件114班李大宝 201100834416 for(i=0;i<=n-k;i++) //输出最小值。 printf(\printf(\ for(i=0;i<=n-k;i++) //输出最大值。 printf(\printf(\ } return 0; } 运行结果: 第26页
正在阅读:
实验 二 栈和队列的基本操作实现及其应用01-14
福师离线作业2019.3《小学德育理论》02-02
财综24号关于调整部分地区新增建设用地土地有偿使用费征收06-19
天津市人才服务中心08-05
读书真让我着了迷作文500字06-20
配网工程典型表式07-24
2014-2015常州C语言期末会考试卷03-02
抓阄娃娃作文400字06-25
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 基本操作
- 队列
- 及其
- 实验
- 实现
- 应用