C语言实现双链表基本操作(创建、查找、插入、删除)
来源:互联网 发布:淘宝追评怎么修改 编辑:程序博客网 时间:2024/06/03 18:08
//双链表基本操作
#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);
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);
}
#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);
}
0 0
- C语言实现双链表基本操作(创建、查找、插入、删除)
- c语言:顺序表的实现(一) 创建,插入,删除,查找,输出等基本操作实现
- 二叉查找树的查找、插入、删除、释放等基本操作的实现(C语言)
- 单链表基本操作的实现--创建、插入、查找、删除
- C语言实现顺序表的插入、删除、查找、遍历等基本操作
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C语言实现二叉查找树(搜索树)的创建,插入,查找,删除
- C语言顺序表的插入、删除、查找操作实现
- Linked List的基本操作(创建/删除/插入/查找)
- 平衡二叉树的C语言实现(创建、插入、查找、删除、旋转)【数据结构】
- c语言:单链表的实现(一) 创建,插入,删除,查找
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- C语言链表的创建、插入、查找、删除、清空操作
- 二叉查找树(二叉排序树)创建、插入、删除、查找-C语言
- C语言实现二叉搜索树的创建、插入、删除和查找
- C语言实现带头结点的链表的创建、查找、插入、删除
- C语言实现链表的创建,初始化,插入,删除,查找
- MySQL详解(20)-----------数据库备份和还原
- 关于java使用jacob调用word,ppt,excel等的转化为html的问题
- android studio上的百度定位的初始化
- Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently
- MOAC 配置
- C语言实现双链表基本操作(创建、查找、插入、删除)
- Unity 3D知识体系结构
- 多工程运行于同一个tomcat下问题
- iOS下划线/虚线/删除线等等
- [XCode] 默认源文件和build目录
- C#开发Unity游戏教程之Scene视图与脚本的使用
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
- Java String.split()用法小结
- MapReduce初级案例