在单向链表中删除偶元素结点
数据结构(本)期末综合练习(2013年6月)

数据结构(本)期末综合练习2013年6月期末综合练习一1. 在数据结构和算法中,与所使用的计算机有关的是()。
A.数据元数间的抽象关系B.数据的存储结构C.算法的时间复杂度 D.数据的逻辑结构2. 一种逻辑结构在存储时()。
A.只要存储数据元素间的关系 B.只能采用一种存储结构C.可采用不同的存储结构 D.只要存储数据元素的值3 .对顺序表,以下叙述中正确的是 ( )。
A.用一组地址连续的存储单元依次存放线性表的数据元素B.各个数据元素的首地址是连续的C.数据元素不能随机访问D.插入操作不需要移动元素4 .对链表, 以下叙述中正确的是()。
A.不能随机访问任一结点 B.结点占用的存储空间是连续的C.插入删除元素的操作一定要要移动结点 D.可以通过下标对链表进行直接访问5.设有一个长度为25的顺序表,要删除第10个元素(下标从1开始),需移动元素的个数为()。
A.9 B.10 C.15 D.166.线性表在存储后,如果相关操作是:要求已知第i个结点的位置访问该结点的前驱结点,则采用()存储方式是不可行的。
A.单链表 B.双链表 C.单循环链表 D.顺序表7. 设单向链表中,指针p指向结点A,若要删除A的直接后继,则所需修改指针的操作为( )。
A.p->next=p->next->next;B.p=p->next;C.p=p->next->next;D.p->next=p ;8.栈和队列的共同特点是()。
A.都是先进后出 B.元素都可以随机进出C.只容许在端点处插入和删除元素 D.都是先进先出9.元素1,3,5,7按顺序依次进栈,按该栈的可能输出序列依次入队列,该队列的可能输出序列是()。
(进栈出栈可以交替进行)。
A.7,5,3,1 B.7,3,1,5C.7,5,1,3 D.5,1,3,710.元素2,4,6,8按顺序依次进栈,按该栈的的可能输出序列依次入队列,该队列的可能输出序列是()(进栈出栈可以交替进行)。
国家开放大学(电大)数据结构(本)阶段性学习测验答案

一、单项选择题(每小题3分,共60分)题目1把数据存储到计算机中,并具体体现数据元素间的逻辑结构称为()。
A. 物理结构题目2下列说法中,不正确的是()。
C. 数据项可由若干个数据元素构成题目3一个存储结点存储一个()。
C. 数据类型题目4数据结构中,与所使用的计算机无关的是数据的()。
A. 逻辑结构题目5在线性表的顺序结构中,以下说法正确的是()。
B. 逻辑上相邻的元素在物理位置上也相邻题目6对链表, 以下叙述中正确的是()。
D. 不能随机访问任一结点题目7下列的叙述中,不属于算法特性的是()。
B. 可读性题目8算法的时间复杂度与()有关。
A. 算法本身题目9设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),插入一个元素,则移动元素个数为()。
B. n-i+1题目10设有一个长度为n的顺序表,要删除第i个元素移动元素的个数为()。
C. n-i题目11在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用语句()。
C. p->next=q->next题目12在一个单链表中p所指结点之后插入一个s所指的结点时,可执行()。
A. s->next=p->next; p->next=s;题目13非空的单向循环链表的尾结点满足()(设头指针为head,指针p指向尾结点)。
A. p->next==head题目14链表不具有的特点是()。
B. 可随机访问任一元素题目15带头结点的链表为空的判断条件是()(设头指针为head)。
C. head->next==NULL题目16在一个长度为n的顺序表中为了删除第5个元素,由第6个元素开始从后到前依次移动了15个元素。
则原顺序表的长度为()。
C. 20题目17有关线性表的正确说法是()。
B. 除了一个和最后一个元素外,其余元素都有一个且仅有一个直接前驱和一个直接后继题目18向一个有127个元素的顺序表中插入一个新元素,并保持原来的顺序不变,平均要移动()个元素。
java笔试之从单向链表中删除指定值的节点

java笔试之从单向链表中删除指定值的节点输⼊⼀个单向链表和⼀个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中⽆节点则返回空指针。
链表的值不能重复构造过程,例如1 -> 23 -> 25 -> 14 -> 57 -> 2最后的链表的顺序为 2 7 3 1 5 4删除结点 2则结果为 7 3 1 5 4package test;import java.util.Scanner;class ListNode {int value;ListNode next = null;public ListNode() {}public ListNode(int value) {this.value = value;}}public class exam24 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int count,hvalue,indata,deldata,pos;StringBuffer sBuffer=new StringBuffer();while (scanner.hasNext()) {count=scanner.nextInt();//结点个数hvalue=scanner.nextInt();//头节点值ListNode head=new ListNode(hvalue);//创建单向链表for (int i = 1; i < count; i++) {indata=scanner.nextInt();pos=scanner.nextInt();Insert(head, indata, pos);}//删除值为deldata的结点deldata=scanner.nextInt();Delete(head, deldata);ListNode lNode=head;//开始遍历while(lNode!=null){sBuffer.append(Integer.toString(lNode.value)+" ");lNode=lNode.next;}System.out.println(sBuffer.substring(0,sBuffer.length()));sBuffer.delete(0, sBuffer.length());}scanner.close();}// 采⽤头插法public static void Insert(ListNode head, int value, int pos) {ListNode preNode = head;while (preNode.value!=pos) {preNode=preNode.next;}ListNode pNode=new ListNode(value);pNode.next=preNode.next;preNode.next=pNode;}public static void Delete(ListNode head,int pos){ ListNode preNode=head;while(preNode.next.value!=pos)preNode=preNode.next;preNode.next=preNode.next.next;}}。
严蔚敏 数据结构课后习题及答案解析

第一章绪论一、选择题1.组成数据的基本单位是()(A)数据项(B)数据类型(C)数据元素(D)数据变量2.数据结构是研究数据的()以及它们之间的相互关系。
(A)理想结构,物理结构(B)理想结构,抽象结构(C)物理结构,逻辑结构(D)抽象结构,逻辑结构3.在数据结构中,从逻辑上可以把数据结构分成()(A)动态结构和静态结构(B)紧凑结构和非紧凑结构(C)线性结构和非线性结构(D)内部结构和外部结构4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。
①(A)数据元素(B)计算方法(C)逻辑存储(D)数据映像②(A)结构(B)关系(C)运算(D)算法5.算法分析的目的是()。
(A)找出数据结构的合理性(B)研究算法中的输入和输出的关系(C)分析算法的效率以求改进(D)分析算法的易懂性和文档性6.计算机算法指的是(①),它必须具备输入、输出和(②)等5个特性。
①(A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法②(A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性(C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性二、判断题1.数据的机内表示称为数据的存储结构。
()2.算法就是程序。
()3.数据元素是数据的最小单位。
()4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。
()5.算法的时间复杂度取决于问题的规模和待处理数据的初态。
()三、填空题1.数据逻辑结构包括________、________、_________ 和_________四种类型,其中树形结构和图形结构合称为_____。
2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______个前驱结点;最后一个结点______后续结点,其余每个结点有且只有_______个后续结点。
3.在树形结构中,树根结点没有_______结点,其余每个结点有且只有_______个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以_________。
计算机数据结构习题1附答案

文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.第1章 绪论1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。
解:数据是对客观事物的符号表示。
在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据对象是性质相同的数据元素的集合,是数据的一个子集。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
存储结构是数据结构在计算机中的表示。
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。
是对一般数据类型的扩展。
1.2 填空题:1.常见的数据结构有__结构,_____结构,____结构等三种。
2.常见的存储结构有_________结构,______结构等两种。
3.数据的基本单位是____,它在计算机中是作为一个整体来处理的。
4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,______和_____。
5.《数据结构》课程讨论的主要内容是数据的逻辑结构、存储结构和________。
1.2设有数据结构(D,R),其中{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =试按图论中图的画法惯例画出其逻辑结构图。
解:1.3设有以下三个函数:()10002124++=n n n f ,()3450015n n n g+=,()n n n n h log 5005.3+=请判断以下断言正确与否:(1) f(n)是O(g(n)) (2) h(n)是O(f(n)) (3) g(n)是O(h(n)) (4) h(n)是O(n 3.5) (5) h(n)是O(nlogn)解:(1)对 (2)错 (3)错 (4)对 (5)错第二章序列2.1 描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)。
国家开放大学《数据结构(本)》单元测试参考答案

31.顺序存储方式只能用于存储线性结构。(×) 32.顺序存储方式的有点是存储密度大,且插入、删除运算效率高。(×)
单元 3 栈和队列 1.一个顺序栈一旦被声明,其占用空间的大小( )。
A. 已固定 B. 动态变化 C. 可以改变 D. 不能固定 2.链栈和顺序栈相比,有一个比较明显的缺点,即( )。 A. 不会出现栈空的情况 B. 插入操作更加方便 C. 删除操作更加方便 D. 通常不会出现栈满的情况 3.用单链表表示的链式队列的队头在链表的( )位置。 A. 链头 B. 任意位置 C. 链尾 D. 链中 4.在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓 冲区,主机将要输出的数据依次写入缓冲区中,而打印机则从缓冲区中取出数据 打印,该缓冲区应该是一个( )结构。 A. 数组 B. 堆栈 C. 队列 D. 线性表 5.循环队列 A[m] 存放其元素,用 front 和 rear 分别表示队头及队尾,则循环队 列满的条件是( )。
12.一个栈的进栈序列是 5,6,7,8,则栈的不可能的出栈序列是( )。(进 出栈操作可以交替进行)
A. 8,7,6,5 B. 7,6,8,5 C. 7,6,5,8 D. 5,8,6,7 13.栈的插入删除操作在( )进行。 A. 栈底 B. 栈顶 C. 指定位置 D. 任意位置 14.栈和队列的相同点是( )。 A. 逻辑结构与线性表相同,都是操作规则受到限制的线性表 B. 逻辑结构与线性表不同 C. 都是后进后出 D. 都是后进先出 15.以下说法正确的是( )。 A. 栈的特点是先进先出,队列的特点是先进后出 B. 栈和队列的特点都是先进后出
14.算法是在数据结构的基础上对特定问题求解步骤的一种描述,也是若干条指 令组成的优先序列(√)。 15.算法可以用不同的语言描述,如果用 C 语言等高级语言来描述,则算法实际 上就是程序了(×)。 16.程序一定是算法(×)。 17.数据的物理结构是指数据在计算机内的实际存储形式(√)。 18.数据结构中评价算法的两个重要指标是时间复杂度和空间复杂度(√)。 19.在顺序存储结构中,有时也存储数据结构中元素之间的关系(×)。
c++删除节点的方法

在C语言中,删除节点通常涉及到链表的操作。
以下是一个简单的示例,展示了如何在单向链表中删除一个节点:```c#include <stdio.h>#include <stdlib.h>// 定义链表节点结构体typedef struct Node {int data;struct Node* next;} Node;// 创建新节点的函数Node* createNode(int data) {Node* newNode = (Node*)malloc(sizeof(Node));newNode->data = data;newNode->next = NULL;return newNode;}// 删除节点的函数void deleteNode(Node** head, int key) {Node* temp = *head, *prev;// 如果头节点本身就是要删除的节点if (temp != NULL && temp->data == key) {*head = temp->next; // 改变头free(temp); // 释放旧头结点的内存return;}// 查找要删除的节点,同时保留前一个节点的指针while (temp != NULL && temp->data != key) {prev = temp;temp = temp->next;}// 如果没找到要删除的节点,直接返回if (temp == NULL) return;// 从链表中删除节点(将前一个节点的next指向当前节点的next)prev->next = temp->next;// 释放被删除节点的内存free(temp);}```在这个例子中,`deleteNode`函数接受一个指向链表头节点的指针和一个整数key作为参数。
电大数据结构考试汇总---(填空题)

电大数据结构考试汇总---(填空题)1、在一个长度为n的顺序存储结构的线性表中,向第i(1≤i≤n+1)个元素之前插入新元素时,需向后移动n-i+1个数据元素。
2、从长度为n的采用顺序存储结构的线性表中删除第i(1≤i≤n+1)个元素,需向前移动n-i个元素。
3、数据结构按结点间的关系,可分为4种逻辑结构:集合、线性结构、树形结构、图状结构。
4、数据的逻辑结构在计算机中的表示称为物理结构或存储结构。
5、除了第1个和最后一个结点外,其余结点有且只有一个前驱结点和后继结点的数据结构为线性结构,每个结点可有任意多个前驱和后继结点数的结构为非线性结构。
6、算法的5个重要特性是有穷性、确定性、可形性、有零个或多个输入、有零个或多个输出。
7、数据结构中的数据元素存在多对多的关系称为图状结构结构。
8、数据结构中的数据元素存在一对多的关系称树形结构结构。
9、数据结构中的数据元素存在一对一的关系称为线性结构结构。
10、要求在n个数据元素中找其中值最大的元素,设基本操作为元素间的比较。
则比较的次数和算法的时间复杂度分别为n-1和O(n)。
11、在一个单链表中p所指结点之后插入一个s所指结点时,应执行__s->next=p->next;__和p->next=s;的操作。
12、设有一个头指针为head的单向循环链表,p指向链表中的结点,若p->next= =head,则p所指结点为尾结点。
13、在一个单向链表中,要删除p所指结点,已知q指向p所指结点的前驱结点。
则可以用操作q->next=p->next; 。
14、设有一个头指针为head的单向链表,p指向表中某一个结点,且有p->next= =NULL,通过操作p->next=head;,就可使该单向链表构造成单向循环链表。
15、每个结点只包含一个指针域的线性表叫单链表。
16、线性表具有顺序存储和链式存储两种存储结构。
17、数据的逻辑结构是从逻辑关系上描述数据,它与数据的关系存储结构无关,是独立于计算机的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验目的:
1.掌握单向链表的存储特点及其实现。
2.掌握单向链表的插入、删除算法及其应用算法的程序实现。
实验报告(实验内容、实验步骤、实验运行结果分析、实验小结)
实验内容:
在单向链表中删除所有的偶数元素结点。
#include <stdio.h>
#include <stdlib.h>
p->next=NULL;
q=p;
head=p;
printf("请输入线性表L的元素:\n");
for(i=1;i<=n;i++)
{scanf("%d",&x);
p=(link) malloc(sizeof(node));
p->data=x;
p->next=NULL;
q->next=p;
q=p;
}
return(head); //返回头节点指针
{
link p,q;
q=head;
p=head->next;
while(p)
{
if((p->data%2!=0))
{
p=p->next;
q=q->next;
}
else
{q->next=p->next;
p=p->next;
}
}
printf("shanou后的链式表为:\n");
p=head->next;
}
void print(link head) //输出链表
{
printf("线性表L的元素为:\n");
link p;
p=head->next;
while(p)
{printf("%3d",p->data);
p=p->next;
}
printf("\n");
}
void shanou(link head)
while(p)
{printf("%3d",p->data);
p=p->next;
}
printf("\n");
}
void main()
{link head;
int n;
printf("请输入线性表L的长度:\n");
scanf("%d",&n);
head=createlink(n);
print(head);
shanou(head);
}
运行结果:
#define NULL 0
typedef struct node //定义链表元素结构体
{xt;
}node,*link;
link createlink(int n) //建链表
{ int i,x;
link p,q,head;
p=(link)malloc(sizeof(node)); //分配空间