数据结构链表习题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

练习题:

1)在一个单链表head中,若要在指针p所指结点后插入一个q指针所指结点,则执行_____。

A. p->next=q->next; q->next=p;

B. q->next=p->next; p=q;

C. p->next=q->next; p->next=q;

D. q->next=p->next; p->next=q;

2)在一个单链表head中,若要删除指针p所指结点的后继结点,则执行_____。

A. p=p->next;free(p);

B. p->next=p->next->next; free(p);

C. q= p->next ;q->next=p->next; free(q);

D. q=p->next; p->next=q->next ;free(q);

3)若长度为n的线性表(a1, a2,…, a n)采用顺序存储,在第i个位置上插入一个新元素,需要依次向后移动个数据元素。

A n-i

B n-i-1

C n-i+1

D n+i

3)完成下列打印带头单链表的各元素的算法.

typedef struct List

{ int data;

struct List *next;

} Node,*Link;

void printlk(Link head)

{Link p=head->next;

{ printf(“%d\n”,p->data);

}

4)已知无头单链表A和B表示两个集合,本算法实现A=A-B (集合的补运算)。

typedef struct node {

int data;

struct node *next;}lnode;

void setminus(lnode *&A,lnode *B)

while (B!=NULL)

{p=A;

}

A=A->next;

}

5)下列算法创建n个元素的带头单链表.

typedef struct lnode { int data;

struct lnode *next;

}lnode,*linklist ;

void create(linklist &head, int n)

{linklist p; int i;

head=(linklist)malloc(sizeof(lnode));

A head->next=null

for(i=n;i>0;i--)

{p =(linklist)malloc(sizeof(lnode));

scanf(“%d”,&p->data);

B p->next=head->next

C head->next=p

}

}

相关文档
最新文档