首页 > 其他分享 >[数据结构]双向链表及其基本操作

[数据结构]双向链表及其基本操作

时间:2023-03-20 15:06:56浏览次数:38  
标签:return int DulLinkList DulList next 链表 prior 基本操作 数据结构


#include <iostream>
#include <cstdio>

using namespace std;

typedef int Elem;
typedef int Status;

typedef struct DulList //我猜是 doubole list...
{
/* data */
Elem data;
struct DulList *prior;
struct DulList *next; // 前 后 指针
} DulList, *DulLinkList;

Status InitDulList(DulLinkList &L)
{
L = new DulList;
L->next = NULL;
L->prior = NULL;

return 1;
}

Status CreatDulList_H(DulLinkList &L, int num)
{
L = new DulList;
L->next = NULL;

for (int i = 1; i <= num; i++)
{
DulList *p = new DulList;
cin >> p->data;

p->next = L->next;
if (L->next) L->next->prior = p;
L->next = p;
p->prior = L;
}

return 1;
}

DulList* GetElemDulList(DulLinkList &L, int i) //这个真就 DulList* ...
{
DulList *p = L;
int j = 0;

while (p && j < i)
{
p = p->next;
++j;
}

if (i<1 || j>i)
;//这个不该这么写 其实

return p;
}

Status InsertDulList(DulLinkList &L, int i, Elem e)
{
DulList *p = L;

if (!(p = GetElemDulList(L, i))) //P的位置其实被改了 不会出现 插在头的情况
return -1;

DulList *s = new DulList;

s->data = e;
s->prior = p->prior;
p->prior->next = s;

s->next = p;
p->prior = s;

return 1;
}

Status DelDulList(DulLinkList &L, int i) //Delete
{
DulList *p = L->next;
if (!(p = GetElemDulList(L, i)))
return -1;

DulList *s = new DulList;

p->prior->next = p->next;
p->next->prior = p->prior; //前后跳着指 中间就空一格了

return 1;
}

Status ShowDulList(DulLinkList &L) {

DulList *p = L->next;

while (p)
{
cout << p->data<<" ";
p = p->next;
}

return 1;
}

int main()
{
DulLinkList L;

//1
InitDulList(L);

//1
CreatDulList_H(L, 3);

//1
InsertDulList(L, 2, 1);

//1
ShowDulList(L);

//1
DelDulList(L, 2);

//1
ShowDulList(L);
}


标签:return,int,DulLinkList,DulList,next,链表,prior,基本操作,数据结构
From: https://blog.51cto.com/u_16014765/6132920

相关文章

  • [数据结构]单链表及其基本操作
    /**@Author:*@data:2019-12-0214:49:03*@LastModifiedby:*@LastModifiedtime:2019-12-0215:54:49*/#include<iostream>#include<cstdio>usingnamespa......
  • [数据结构][队列]链表模拟队列操作
    #include<iostream>#include<cstdio>usingnamespacestd;#defineMAXSIZE100typedefintStatus;typedefintElem;typedefstructQNode{/*data*/Elemdata;stru......
  • [链表]用静态数组模拟单链表
    来源:模板题算法标签链表题目描述实现一个单链表,链表初始为空,支持三种操作:(1)向链表头插入一个数;(2)删除第k个插入的数后面的数;(3)在第k个插入的数后插入一个数现在要对......
  • [数据结构]有序表的合并
    /**@Author:*@Date:2019-12-0320:18:46*@LastModifiedby:*@LastModifiedtime:2019-12-0320:44:28*/#include<iostream>#include<cstdio>u......
  • 数据结构与算法:二叉树专题
    数据结构与算法:二叉树专题​​前言​​​​前提条件​​​​基础知识​​​​二叉树链式存储结构​​​​二叉树中序遍历​​​​二叉树层序遍历​​​​常见编程题​​​​......
  • 链表
    链表的概述链表是由一个一个的节点组成,节点没有名字,每个节点从堆区空间动态申请,节点间是非连续的(物理上),但是每个节点通过指针域保存下一个节点的位置,达到逻辑上的连续......
  • redis 操作集合基本操作
    Redis的Set是String类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。集合对象的编码可以是intset或者hashtable。Redis中集合是通过哈......
  • 【C 数据结构】循环队列
    循环队列预先分配好数组空间#defineBUFFER_SIZE1024//在栈区分配空间intbuf[N];//在堆区分配空间int*buf;buf=(int*)malloc(BUFFER_SIZE*sizeof(int))......
  • 【VTK学习笔记】VTK基本数据结构_3.2数据对象和数据集
    任务:把几何结构和拓扑结构加入到数据集中1.无拓扑结构1#include<vtkSmartPointer.h>2#include<vtkPoints.h>//几何结构3#include<vtkPolyData.h>//数据集......
  • 数据结构-图
    1.图的概念基础概念顶点集合(vex-set):如上图S(vex)=边集合(arc-set):如上图S(arc)=度(degree):⽆向图中从⼀个点延伸出去的边数就是该点的度;有向图中包含出度和⼊......