简单实现双链表---学习
来源:互联网 发布:nrf24l01与单片机连接 编辑:程序博客网 时间:2024/06/05 17:36
链表的创立过程,其实即位小朋友玩的“手拉手”游戏,你拉着我,我拉着你,这样循环下去。
链表的创立:--数据类型
这里以‘#’来表示结束
Node * CreateList()
{
Node *temp,*p;
p=(Node*)malloc(sizeof(Node));
temp=p;
p->pro=NULL;
while(p->data!='#')
{
Node *s=(Node *)malloc(sizeof(Node));
p->next=s;
s->pro=p;
scanf("%c",&s->data);
p=s;
}
p->next=NULL;
return temp;
}
//查找一个双向链表的值,返回该节点,
Node * find(Node *s,Element c)
{
Node* p=s->next;
if(p==NULL)
returnNULL;
while(p->data!=c)
{
p=p->next;
}
return p;
}
//打印双向链表的值到屏幕当中来
void ListPrint(Node *p)
{
Node *s=p->next;
while(s->data!='#')
{
printf("%c ",s->data);
s=s->next;
}
}
//计算长度
int LengthList(Node *p)
{
int length=0;
Node *s=p->next;
while(s->data!='#')
{
s=s->next;
length++;
}
s->next=NULL;
return length/2;
}
Node * proList(Node *p,Element c)
{
Node* s=p->next;
if(s==NULL)
returnNULL;
if(s->data==c)
{
s=p;
}
while (s->next->data!=c) {
s=s->next;
}
return s;
}
//删除双向链表中一个值
Node* deleteOneDataList(Node*p,Element c)
{
Node *head=p;
p=p->next;
while(p->next->data!=c)
{
p=p->next;
}
Node *d=p->next;
Node *temp=p->next->next;
p->next=temp;
temp->pro=p;
free(d);
return head;
}
//双向链表插入一个值在指定的位置
Node* insert(Node *p,int a,Element d)
{
int local=0;
Node *head=p;
Node *pro;
Node *next;
Node *da=(Node *)malloc(sizeof(Node));
da->data=d;
p=p->next;
if(a==LengthList(p)||a>LengthList(p))
{
while(p->data!='#')
{
p=p->next;
}
p->next=da;
da->pro=p;
da->next=NULL;
}
else
{
while(local/2!=a-1)
{
p=p->next;
local++;
}
pro=p;
next=p->next;
da->next=next;
next->pro=da;
pro->next=da;
da->pro=pro;
}
return head;
}
- 简单实现双链表---学习
- Python 机器学习 简单实现
- 学习IOC之简单实现
- 增强学习简单案例实现
- Eclipse:Spring学习之一IOC简单实现
- C++ builder学习之简单Session 实现
- Python学习笔记--简单实现DNS查询
- hessian简单原理及实现例子--学习
- Hebbian学习规则 1神经元 简单实现
- Hebbian学习规则 2神经元 简单实现
- java俄罗斯方块简单实现,新手适合学习
- 学习异步开发-简单实现缓冲区代码
- 【学习记录】简单线程池的实现
- 线程学习(四) 死锁简单实现
- Ice中间件学习 02 【简单实现HelloWorld】
- 库函数学习(1):简单实现strcpy
- CSS学习笔记----float简单实现
- CSS学习笔记----简单表格实现
- HDU 6051 If the starlight never fade(原根+欧拉函数)
- java基础
- 确实该往深处钻钻了
- 模板--并查集
- Linux运维学习笔记之一:运维的原则和学习方法
- 简单实现双链表---学习
- 开源车牌识别项目,OpenALPR
- git 提交代码remote: error:updating the current branch in a non-bare repository is denied
- Map-Reduce和Spark
- keepalived对lftp的控制
- USB设备插入和拔出的波形
- Apache 虚拟功能- 同一台电脑运行两个以上的网站
- 高效学习之全脑模型
- quartz基本使用