数据结构链表习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
}
}