数据结构相关

本文介绍了线性表的链式存储结构,包括单链表和双向链表,并通过C语言提供了相关操作的实现。同时,文章提供了多个面试题目,涉及链表的插入、删除、存储特性和线性表的概念理解,帮助读者巩固链表基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、线性表的链式存储及相关操作 C语言版

二、C语言实现双向链表的基本操作

三、面试题

1.       在一个单链表中p所指结点之前插入一个s (值为e)所指结点时,可执行如下操作:
q=head;
while (q->next!=p)  q=q->next;
s= new  Node;   s->data=e;
q->next=     ;    //填空
s->next=     ;    //填空


2.       线性表的顺序存储结构是一种    的存储结构,而链式存储结构是一种___的存储结构。
A.随机存取     B.索引存取   C.顺序存取   D.散列存取


3.       线性表若采用链式存储结构时,要求内存中可用存储单元的地址___。
A. 必须是连续的      B. 部分地址必须是连续的
C. 一定是不连续的    D. 连续或不连续都可以

4.       在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行____。
A. s->next=p->next;  p->next=s;    B. p->next=s->next;  s->next=p;
C. q->next=s;   s->next=p;        D. p->next=s;   s->next=q;


5.       在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行____。
A.  s->next=p;  p->next=s;      B. s->next=p->next;  p->next=s;
C.  s->next=p->next;  p=s;      C. p->next=s;  s->next=p;


6.       在一个单链表中,若删除p所指结点的后续结点,则执行____。
A. p->next= p->next->next;   B. p= p->next;  p->next= p->next->next;
C. p->next= p->next;          D. p= p->next->next;

7.       链表不具备的特点是 ____ 。
A 可随机访问任何一个元素              B 插入、删除操作不需要移动元素
C 无需事先估计存储空间大小              D 所需存储空间与线性表长度成正比

8.       以下关于线性表的说法不正确的是   。 
A 线性表中的数据元素可以是数字、字符、记录等不同类型。 
B 线性表中包含的数据元素个数不是任意的。 
C 线性表中的每个结点都有且只有一个直接前趋和直接后继。 
D 存在这样的线性表:表中各结点都没有直接前趋和直接后继。

9.       在一个长度为n的顺序表中删除第i个元素,要移动    个元素。如果要在第i个元素前插入一个元素,要后移( )个元素。 N-I N-I+1

答案:

1.q->next=s;
  s->next=p;
2.A/C(这题是考察对概念的理解,可参考第7题,“顺序表才能随即存取,而链表不可以”)
3.D
4.C
5.B
6.A
7.A(此题绝对选A,因为链表只能根据他的前一个结点才能找到下一个结点,不具备随即访问元素的功能)
8.C
9.n-i;  n-i+1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值