C语言实现双链表基本操作(创建、查找、插入、删除)

转载 2015年07月07日 10:11:31
//双链表基本操作
#include<stdio.h>
#include<stdlib.h>

typedef int ElemType;
typedef struct DNode
{
ElemType data;
struct DNode *prior,*next;

}DNode,*DLinkList;

//尾插法建立链表
DLinkList CreatDList(DLinkList &la)
{

int x;
la = (DLinkList)malloc(sizeof(DNode));
la->next = NULL;
DNode *s,*r=la;
scanf("%d",&x);
while(x!=9999)
{

s = (DNode *)malloc(sizeof(DNode));
s->data = x;
r->next = s;
s->prior = r; //连接前驱
r = s;
scanf("%d",&x);

}
r->next = NULL;
return la;
}

//按序号查找节点
DNode *GetDElem(DLinkList L,int i)
{

int j = 1;
DNode *p = L->next;
if(i<1)
return NULL;
while(p&&j<i)
{
p = p->next;
j++;
}

return p;
}


//双链表的插入操作
DNode *InsertDElem(DLinkList L,int x,int i)
{
DNode *p = GetDElem(L,i);
DNode *s = (DNode*)malloc(sizeof(DNode));
s->data = x;
s->next = p->next;
p->next->prior = s;
s->prior = p;
p->next = s;
return p;
}

//双链表的删除操作
DNode *DeleteDElem(DLinkList L,int i)
{
DNode *p = GetDElem(L,i-1);
DNode *q = p->next;
p->next = q->next;
q->next->prior = p;
free(q);

return p;

}

void main()
{

DLinkList la;
DNode *m;
CreatDList(la);
//m = InsertDElem(la,54,3);
m = DeleteDElem(la,3);
printf("%d,%d,%d\n",m->prior->data,m->data,m->next->data);

}

数据结构 二叉排序树的创建,查找,插入,删除

Description 实现二叉排序树的创建、查找、插入、删除操作。 Input 10 62 88 58 47 35 73 51 99 37 93 59 58 Output 输入二叉树...
  • mazicwong
  • mazicwong
  • 2016年11月24日 15:44
  • 1964

单链表的初始化,建立,插入,查找,删除

//////////////////////////////////////////// //单链表的初始化,建立,插入,查找,删除。// //Author:Wang Yong ...
  • lemonaha
  • lemonaha
  • 2017年02月21日 14:49
  • 2111

链表的基本操作(C语言版):建立,插入,删除,查找,输出

//1、链表的基本操作(不带头结点)//**的含义把握不准确,要认真研究练习 #include #include typedef struct list { int data; struc...
  • xiaohuizi2009
  • xiaohuizi2009
  • 2013年03月04日 12:44
  • 5776

二叉排序树的查找、插入和删除

1.      二叉排序树 二叉排序树(Binary Sort Tree)或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子...
  • u013256622
  • u013256622
  • 2017年03月04日 12:03
  • 363

二叉排序树的操作(建立、插入、删除和查找)

二叉排序树的建立、插入、删除和查找(删除待补充) #include #include typedef struct node { int key; struct node *lc...
  • yushanjin0767
  • yushanjin0767
  • 2013年08月22日 15:55
  • 1531

二叉排序树的建立、插入、删除、查找、4种遍历 C++完整实现

#include #include #include using namespace std; typedef int KeyType; #define NUM 13 class BinSTree;...
  • u010367506
  • u010367506
  • 2014年04月01日 15:25
  • 2790

哈希表的插入、查找、删除

散列表(Hash Table,也叫哈希表),是根据关键码值(key value)而进行直接访问的数据结构。它通过关键码值映射到表中的一个位置来访问记录,以加快访问的速度。这个映射函数叫做散列函数,存放...
  • bin_ge_love
  • bin_ge_love
  • 2016年06月09日 13:58
  • 2223

二叉树遍历、插入、删除等常见操作

1.二叉查找树的创建 2.二叉查找树清空 3.二叉查找树查询 4.查找最大值、最小值 5.二叉查找树插入操作 6.二叉查找树的删除操作 7.分别使用非递归和递归方式(部分用多种方式)实现树的先序遍历、...
  • u013074465
  • u013074465
  • 2014年12月03日 17:27
  • 7172

[转]C语言之单向链表的创建插入删除等功能

数据结构学习笔记之链表(C语言版) 分类: 技术交流2015-01-04 18:34 183人阅读 评论(0) 收藏 举报 数据结构c语言线性表单链表合并        链表是一种物理存储...
  • rc0711
  • rc0711
  • 2015年06月11日 17:20
  • 530

编程实现顺序存储结构和链式存储结构线性表的建立、查找、插入、删除等基本操作

#include #include typedef struct LNode{ int data; //链表数据 struct LNode* next; //链表指针 }LNode,...
  • foreverlove111
  • foreverlove111
  • 2017年10月30日 17:08
  • 448
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言实现双链表基本操作(创建、查找、插入、删除)
举报原因:
原因补充:

(最多只允许输入30个字)