内容发布更新时间 : 2024/11/15 16:22:06星期一 下面是文章的全部内容请认真阅读。
.
va[j+1]=va[j]; va[i]=x; } n++; }
7、假设线性表采用顺序存储结构,表中元素值为整型。阅读算法f2,设顺序表L=(3,7,3,2,1,1,8,7,3),写出执行算法f2后的线性表L的数据元素,并描述该算法的功能。
void f2(SeqList *L){
int i,j,k; k=0;
for(i=0;i
for(j=0;j
if(j==k){
if(k!=i)L->data[k]=L->data[i];
}
L->length=k; }
答案:
(3,7,2,1,8) 删除顺序表中重复的元素
8、已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,
}
k++;
可编辑范本
.
删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。 答案:
void Delete_list(Lnode *head, ElemType x, ElemType y) {Lnode *p, *q;
if(!head) return ERROR;
p=head; q=p; while(!p)
{if(p->data>x) && (p->data if(p==head) {head=p->next; free(p); p=head; q=p; } else {q->next=p->next; free(p); p=q->next; } else {q=p; p=p->next; } } } 9、在带头结点的循环链表L中,结点的数据元素为整型,且按值递增有序存放。给定两个整数a和b,且a 可编辑范本 . 点。 第三章 栈和队列 一、选择题 1、一个栈的输入序列为:a,b,c,d,e,则栈的不可能输出的序列是( )。 A. a,b,c,d,e B. d,e,c,b,a C. d,c,e,a,b D. e,d,c,b,a 2、判断一个循环队列Q(最多n个元素)为满的条件是( )。 A. Q->rear==Q->front B. Q->rear==Q->front+1 C. Q->front==(Q->rear+1)%n D. Q->front==(Q->rear-1)%n 3、设计一个判别表达式中括号是否配对的算法,采用( )数据结构最佳。 A. 顺序表 B. 链表 C. 队列 D. 栈 4、带头结点的单链表head为空的判定条件是( )。 A. head==NULL B. head->next==NULL C. head->next!=NULL D. head!=NULL 5、一个栈的输入序列为:1,2,3,4,则栈的不可能输出的序列是( )。 A. 1243 B. 2134 C. 1432 D. 4312 E. 3214 6、若用一个大小为6的数组来实现循环队列,且当rear和front的值分别为0,3。当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为( )。 A. 1和5 B. 2和4 C. 4和2 D. 5和1 7、队列的插入操作是在( )。 可编辑范本 . A. 队尾 B. 队头 C. 队列任意位置 D. 队头元素后 8、循环队列的队头和队尾指针分别为front和rear,则判断循环队列为空的条件是( )。 A. front==rear C. rear==0 B. front==0 D. front=rear+1 9、一个顺序栈S,其栈顶指针为top,则将元素e入栈的操作是( )。 A. *S->top=e;S->top++; C. *S->top=e B. S->top++;*S->top=e; D. S->top=e; 10、表达式a*(b+c)-d的后缀表达式是( )。 A. abcd+- B. abc+*d- C. abc*+d- D. -+*abcd 11、将递归算法转换成对应的非递归算法时,通常需要使用( )来保存中间结果。 A. 队列 B. 栈 C. 链表 D. 树 12、栈的插入和删除操作在( )。 A. 栈底 B. 栈顶 C. 任意位置 D. 指定位置 13、五节车厢以编号1,2,3,4,5顺序进入铁路调度站(栈),可以得到( )的编组。 A. 3,4,5,1,2 C. 3,5,4,2,1 B. 2,4,1,3,5 D. 1,3,5,2,4 14、判定一个顺序栈S(栈空间大小为n)为空的条件是( )。 A. S->top==0 C. S->top==n B. S->top!=0 D. S->top!=n 15、在一个链队列中,front和rear分别为头指针和尾指针,则插入一个结点s的操作为 可编辑范本 . ( )。 A. front=front->next B. s->next=rear;rear=s C. rear->next=s;rear=s; D. s->next=front;front=s; 16、一个队列的入队序列是1,2,3,4,则队列的出队序列是( )。 A. 1,2,3,4 C. 1,4,3,2 B. 4,3,2,1 D. 3,4,1,2 17、依次在初始为空的队列中插入元素a,b,c,d以后,紧接着做了两次删除操作,此时的队头元素是( )。 A. a B. b C. c D. d 18、正常情况下,删除非空的顺序存储结构的堆栈的栈顶元素,栈顶指针top的变化是( )。 A. top不变 B. top=0 C. top=top+1 D. top=top-1 19、判断一个循环队列Q(空间大小为M)为空的条件是( A )。 A. Q->front==Q->rear C. Q->front+1=Q->rear B. Q->rear-Q->front-1==M D. Q->rear+1=Q->front 20、设计一个判别表达式中左右括号是否配对出现的算法,采用( C )数据结构最佳。 A. 线性表的顺序存储结构 储结构 21、当用大小为N的数组存储顺序循环队列时,该队列的最大长度为(C )。 A. N B. N+1 C. N-1 D. N-2 B. 队列 C. 栈 D. 线性表的链式存 22、队列的删除操作是在( A )。 可编辑范本