• 2022-05-31
    有一个非空双链表L,设计一个算法在第i个结点之前插入一个值为x的结点。
  • bool InsertBeforei(DLinkList *&L,int i,ElemType x){ DLinkList *p=L->;next,*s; int j=1; if (i<;1) return false; while (p!=NULL && j<;i) //查找第i个结点 { j++; p=p->;next; } if (p==NULL) //没有找到第i个结点返回false return false; s=(DLinkList *)malloc(sizeof(DLinkList)); s->;data=x; //在*p结点之前插入新结点 p->;prior->;next=s; s->;prior=p->;prior; s->;next=p; p->;prior=s; return true;}

    内容

    • 0

      对于双向链表,在两个结点之间插入一个新结点需修改的指针共(__)个,单链表为 (__)个。

    • 1

      一含N个元素的顺序表,若在第i个元素之前插入一个元素,需移动____个元素。

    • 2

      一个具有n个结点的单链表,在指针p所指结点后插入一个新结点的时间复杂度为(__);在给定值为x的结点后插入一个新结点的时间复杂度为(__)

    • 3

      在下列算法中,时间复杂度是O(1)的操作是( ) A: 在n个结点的顺序表中,访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n) B: 在n个结点的链表中,访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n) C: 在n个结点的顺序表中,删除第i个结点(1≤i≤n) D: 在n个结点的链表中,删除第i个结点(1≤i≤n)

    • 4

      在单链表中插入结点只需要()。但同时,若要在第()个结点之前插入元素,修改的是第 ()个结点的指针。