数据结构期末复习(ろく)--双向链表

 1 #include <iostream>
 2 using namespace std;
 3 typedef struct DulNode
 4 {
 5     int data;
 6     struct DulNode *next;  //后继节点
 7     struct DulNode *prior; //前驱节点
 8 }DulNode,*DulLinkList;
 9
10
11 void Creat_DLink(DulLinkList &L)  //尾插法创建单链表
12 {
13     L = new DulNode;
14     L->next=NULL;         //先建立一个带头结点的空链表
15     DulLinkList p=L;   //中间变量
16     int n;
17     cout<<"1)你想输入多少数字?:";
18     cin>>n;
19     cout<<"请输入表数据,以空格隔开:";
20     for(int i = 0;i<n;++i)
21     {
22         DulLinkList s = new DulNode; //中间变量
23         cin>>s->data;  //将输入元素的值赋给s
24         s->next=NULL;  //将新节点插入到头节点之后
25         p->next=s;
26         s->prior=p;
27         p=s;
28     }
29     cout<<"建表成功\n2)链表为:";
30 }
31
32 DulNode *GetElem(DulLinkList L,int i)  //取得第i个位置的位置指针p
33 {
34     DulLinkList p = new DulNode;
35     p=L->next;
36     int j=1;
37     while(p&&j<i) {
38          p = p->next;
39          ++j;
40      }
41      return p;
42 }
43
44 int Insert_DulLink(DulLinkList &L,int i,int e)  //插入
45 {
46     DulLinkList p=new DulNode;
47     DulLinkList s=new DulNode;
48     p=GetElem(L,i);
49     if(!p)
50         return -1;
51     s->data = e;
52     s->next = p->next; p->next = s;
53     s->next->prior = s; s->prior = p;
54     return 0;
55
56 }
57
58 int Delete_DulLink(DulLinkList &L,int i) //删除
59 {
60     DulLinkList p=new DulNode;
61     p=GetElem(L,i);
62     if(!p)
63         return -1;
64     p->prior->next=p->next;
65     p->next->prior=p->prior;
66     delete p;
67     cout<<"删除成功\n";
68     return 0;
69 }
70
71 void Print_DLink(DulLinkList L)  //输出
72 {
73     DulLinkList p=L->next;
74     while(p) {
75         cout<<p->data<<" ";
76         p=p->next;
77     }
78     cout<<endl;
79 }
80
81 int main()
82 {
83     DulLinkList L;
84     int a,b;
85     Creat_DLink(L);
86     Print_DLink(L);
87     cout<<"3)请输入要插入的位置和数值:";
88     cin>>a>>b;
89     Insert_DulLink(L,a,b);
90     cout<<"插入后链表为:";
91     Print_DLink(L);
92     int i;
93     cout<<"4)请输入要删除的位置:";
94     cin>>i;
95     Delete_DulLink(L,i);
96     cout<<"删除后链表为:";
97     Print_DLink(L);
98     return 0;
99 }

编译结果如下:

原文地址:https://www.cnblogs.com/DSYR/p/9190686.html

时间: 2024-10-22 15:33:51

数据结构期末复习(ろく)--双向链表的相关文章

数据结构期末复习第五章数组和广义表

数据结构期末复习第五章 数组和广义表 二维数组A[m][n]按行优先 寻址计算方法,每个数组元素占据d 个地址单元.     设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((i-1)*n+j-1)*d     设数组的基址为LOC(a00) :LOC(aij)=LOC(a00)+( i*n+j )*d    二维数组A[m][n]按列优先 寻址计算方法,每个数组元素占据d 个地址单元.     设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((j

数据结构期末复习(三)

数据结构期末复习(三) 数组的存储结构 二维数组的顺序存储结构分为以行序为主序的存储方式和以列序为主序的存储方式. 以行序为主的存储方式就是常规的先存第0行的每列,再存第一行的每列,以此类推.以列为主的存储方式同理. 对于三维数组来说,按下标从左到右的顺序存储.例如,设a[0][0][0]的地址为p,则对于数组a[m][n][r],a[i][j][k] = p + (i*n*r + j*r + k)*l; 稀疏矩阵 三元组顺序表 转置函数最简单的方法就是row和col对应的值交换,并且row和c

数据结构期末复习第一章绪论

前言: 最近快期末了,复习下数据结构,下列习题和答案解析,大部分来源于网络,如有不对之处还请指出. 在这里,星云祝各位考生期末考试顺利,新年快乐! 第一章绪论 1. 数据结构是一门研究非数值计算的程序设计问题中计算机的(操作对象)以及它们之间的(关系)和(操作)的学科. 2. 下列关于数据结构的基本概念中,叙述正确的是( C ). A. 数据元素是数据的最小单位. B. 数据的逻辑结构是指数据的各数据项之间的逻辑关系. C. 任何一个算法的设计取决于选定逻辑结构,而算法的实现依赖于采用的存储结构

数据结构期末复习第二章线性表

第二章:线性表 1.线性结构的基本特征答:线性结构是若干数据元素构成的有序(次序)集① 集合中必存在唯一的一个“第一元素”:② 集合中必存在唯一的一个 “最后元素”:③ 除第一元素之外,均有 唯一的前驱:④ 除最后元素之外,均有 唯一的后继. 2.线性表的顺序存储结构和链式存储结构分别是______.(  D )   A. 顺序存取的存储结构.顺序存取的存储结构  B. 顺序存取的存储结构.随机存取的存储结构   C. 随机存取的存储结构.随机存取的存储结构  D. 随机存取的存储结构.顺序存取

数据结构期末复习第三章栈和队列

第三章:栈和队列 栈的特性:后进先出(LIFO) 1.  输入序列为ABC,可以变为CBA时,经过的栈操作为( B )A. push, pop, push, pop, push, popB. push, push, push, pop, pop, popC. push, push, pop, pop, push, popD. push, pop, push, push, pop, pop 解析: ABC经过push,push,push操作后,从栈顶到栈底元素为CBA,经过pop,pop,pop出

数据结构期末复习第六章树和二叉树

知识点: 先序遍历二叉树规则:根-左-右 1.访问根结点 2.先序遍历左子树 3.先序遍历右子树 中序遍历二叉树规则:左-根-右 1.先中序遍历左子树 2.再访问根节点 3.最后访问中序遍历右子树 后序遍历二叉树规则:左-右-根 1.后序遍历左子树 2.后序遍历右子树 3.访问根结点 1.  一棵二叉树的先序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历结果为(A)A. CBEFDA                       B. FEDCBAC. CBEDFA        

数据结构期末复习(いち)--顺序栈定义及使用

1 #include <iostream> 2 using namespace std; 3 #define MAXSIZE 100 //顺序栈存储空间初始分配大小 4 #define OK 1 5 #define ERROR 0 6 #define OVERFLOW -1 7 typedef struct //顺序栈结构定义 8 { 9 int *base; //栈底指针 10 int *top; //栈顶指针 11 int stacksize; //栈可使用的最大容量 12 } Sqsta

[期末复习]《语义网与知识图谱》期末复习(二)

<语义网与知识图谱>期末复习(二) 这次老师发了个最终版的pdf帮助我们复习,那我就重来. 基本 语义web的组成:语义web信息的开放标准.从web描述信息中进一步获取语义的方法. 本体:本体是一种形式化的,对共享概念体系的明确而又详细的说明.提供一种共享词表.核心是分类体系. RDF使用有向图作为数据类型. RDF-Literals 即文本或者说是字符串,在rdf图种用方框表示. RDF表示 一个三元组包含 主语:URIs和空节点 谓语:URIs(通常被成为属性) 宾语:URIs.空节点或

[期末复习] 计算机操作系统复习(一)

操作系统期末复习 第一章-操作系统引论 操作系统的作用 作为计算机硬件系统之间的接口 系统资源的管理者 实现对计算机资源的抽象 操作系统的发展过程 未配置操作系统的计算机系统 人工操作,用户独占全机,资源浪费 脱机输入输出(Off-Line I/O)方式. 单道批处理系统 这里批处理指的是把很多作业放在一个磁带上,一次性输入给计算机 解决了人机矛盾(每执行一道程序都要手动装载)和cpu与I/O设备速度不匹配矛盾.提高了系统的吞吐量. 缺点:系统资源利用率低(I/O请求成功前CPU空闲). 多道批