您的位置: 网站首页 > 程序开发 > 数据结构 > 附录 习题答案 > 【第2章 线 性 表】

第2章 线 性 表

 

1选择题

ADBAB  CBCBC  DCBAD  ACBDD

2填空题

1)线性,任何,栈顶,队尾,队首

2n-i+1

3n-i 

4)先栈顶指针,后存入元素 

5)先取出元素,后移动栈顶指针 

6)前一个位置 

7)先移动队首元素,后取出元素 

8n-1

3问答题

1)略。

2)略。

3)略。

4this指向表的最后节点,this指向空表。

4上机操作题

1)算法如下:

void Insert(SqList &L,ElemType x)

{

    int i=0,j;

    while(i<L->length && L.data[i]<x) i++;

    for(j=L->length-1;j>=i;j--)

         L.data[j+1]=L.data[j];

    L.data[i]=x;

    L->length++;

}

2算法如下

void Delete(SqList &L,int i,int k)

{

    int j;

    if(i<L.length && i>=0 && i+k<=L.length)

    {   

        for(j=i+k;j<L.length;j++)

        L.data[j-k+1]=L.data[j];

        L.length-=k;

    }

    else

    printf("参数不正确\n");

}

3算法如下

void Replace(SqList &L,ElemType x,ElemType y)

{

   int i;

   for(i=0;i<L.length;i++)

      if(L.data[i]==x)

        L.data[i]=y;

}

4算法如下

pre=head;

current=head->next;

while(this!=head&&current->data>ptr->data)

{

   pre=current;

   current=current-next;

}

ptr->next=current;

pre->next=ptr;

5算法如下

先遍历AB两个循环链表的尾部。

Atail=A;

while(Atail->next!=A)

  Atail=Atail->next

Btail=B;

while(Btail->next!=B)

  Btail=Btail->next

接下来将两个字符串连起来,最后的链表以A为首。

Atail->next=B;

Btail->next=A;