注意:此页面搜索的是所有试题
安阳师范学院-计算机应用技术-数据结构
若进栈序列为a,b,c,且进栈和出栈可以穿插进行,则可能出现____个不同的出栈序列。
简述队列和栈这两种数据类型的相同点和差异点。
假设以数组seqn[m]存放循环队列的元素,设变量rear和quelen分别指示循环队列中队尾元素的位置和元素的个数。 (1)写出队满的条件表达式; (2)写出队空的条件表达式; (3)设m=40,rear=13,quelen=19,求队头元素的位置; (4)写出一般情况下队头元素位置的表达式。
阅读下列算法,并回答问题: (1)Q、Q1和Q2都是队列结构,设队列Q=(1,0,-5,2,-4,-6,9),其中1为队头元素,写出执行f31 (&Q,&Q1,&Q2)之后队列Q、Q1和Q2的状态; (2)简述算法f31的功能。 (注:lnitQueue、EnQueue、DeQueue和QueueEmpty分别是队列初始化、入列、出队和判队空的操作) void f31 (Queue*Q, Queue*Q1, Queue*Q2) { int e; lnitQueue (Q1); lnitQueue (Q2); while (!QueueEmpty (Q)) { e=DeQueue (Q); if (e>=0) EnQueue (Q1,e); else EnQueue (Q2,e) } }
算法f31的功能是清空带头结点的链队列Q。请在空缺处填入合适的内容,使其成为一个完整的算法。 typedef struct node{ DataType data; struct node *next; }QueueNode; typedef struct { QueueNode *front;//队头指针 QueueNode *rear;//队尾指针 }LinkQueue; void f 31(LinkQueue*Q) { QueueNode*p,*s; p= (1) ; while(p!=NULL) { s=p; p=p->next; free (s); ________(2) =NULL; Q->rear=_______(3)_______; }
设栈S和队列Q的初始状态皆为空,元素a1,a2,a3,a4,a5和a6依次通过栈S,元素出栈后即进入队列Q,若6个元素出队列的顺序是a3,a5,a4,a6,a2,a1则栈S至少应该容纳_______个元素?
阅读下列程序,并回答问题: #include<stdio.h> substr(char*t,char*s,int pos,int len) { while(len>0&&*s) { *t=*(s+pos-l); t++;s++;len--; } *t=.\0.; } char *f31(char*s) { char t[100]; if (strlen(s)=1) return s; substr(t,s,1,1); substr(s,s,2,strlen(s)-1); f31(s); return strcat(s,t); } main( ) { char str[100]= ..String..; printf(..%s\n..,f31(str)); } (1)请写出执行该程序后的输出结果; (2)简述函数f31的功能。
空格串是指 空格字符(ASCII码为20H)组成的串,而空串是 任何字符的串,其长度为0。
串是一种特殊的线性表,其特殊性体现在它的数据元素是 ,另外串的基本操作和线性表有很多的区别,在串的基本操作中,通常以“ ”作为操作对象。
已知substr(s,i,len)函数的功能是返回串s中第i个字符开始长度为len的子串,strlen(s)函数的功能是返回串s的长度。若s=″ABCDEFGHIJK″,t=″ABCD″,执行运算substr(s,strlen(t), strlen(t))后的返回值是___________。
在串匹配中,一般将主串称为目标串,将子串称为_______。链串的结点大小定义为结点的_________中存放的字符个数。
字符串“sgabacbadfgbacst” 中存在有 ____个与字符串“ba”相同的子串。在串S=“structure”中,以t为首字符的子串有 ________个。
特殊矩阵和稀疏矩阵哪一种采用压缩存储会失去随机存取的功能?为什么?
已知稀疏矩阵采用带行表的三元组表表示,其形式说明如下: #define MaxRow 100 //稀疏矩阵的最大行数 typedef struct { int i,j,v; //行号、列号、元素值 }TriTupleNode; typedef struct{ TriTupleNode data[MaxSize]; int RowTab[MaxRow+1]; //行表 int m,n,t; //矩阵的行数、列数和非零元个数 }RTriTupleTable; 下列算法f31的功能是,以行优先的顺序输入稀疏矩阵的非零元(行号、列号、元素值),建立稀疏矩阵的带行表的三元组表存储结构。请在空缺处填入合适内容,使其成为一个完整的算法。(注:矩阵的行、列下标均从1起计) void f31(RTriTupleTable *R) { int i,k; scanf(″%d %d %d″,&R->m,&R->n,&R->t); R->RowTab[1]=0; k=1; //k指示当前输入的非零元的行号 for(i=0; ① ;i++) { scanf(″%d %d %d″, ② , ③ ,&R->data[i].v); while(k<R->data[i].i) { ④ ; R->RowTab[k]=i; } } } ① ② ③ ④
阅读下列算法,并回答问题: (1)假设数组L[8]={3,0,5,1,6,4,2,7},写出执行函数调用f32(L,8)后的L; (2)写出上述函数调用过程中进行元素交换操作的总次数。 void f32(int R[],int n){ int i,t; for (i=0;i<n-1;i++) while (R[i]!=i){ t=R[R[i]]; R[R[i]]=R[i]; R[i]=t; } } (1) (2)