双链表
来源:互联网 发布:ip地址显示阿里云 编辑:程序博客网 时间:2024/05/29 17:43
//双链表//head->a->b->c->NULL//head<-a<-b<-c#include <stdio.h>struct node{ int element; struct node* previous; struct node* next;};struct node* FindPreofDelete(struct node* head,int element){ struct node* t=head; while(t->next!=NULL&&t->next->element!=element) t=t->next; return t;};struct node* FindPreofInsert(struct node* head,int element){ struct node* t=head; while(t->next!=NULL&&t->next->element<=element) t=t->next; return t;};struct node* Delete(struct node* head,int element){ struct node* t=FindPreofDelete(head,element); if(t->next==NULL){ printf("Not Exist!\n"); return head; } if(t->next->next==NULL){ free(t->next); t->next=NULL; return head; } struct node* temp=t->next; t->next=temp->next; temp->next->previous=t; free(temp);};struct node* Insert(struct node* head,int element){ struct node* p; p=(struct node*)malloc(sizeof(struct node)); p->element=element; p->next=NULL; if(head->next==NULL){//插到头节点后 head->next=p; p->previous=head; return head; } struct node* t=FindPreofInsert(head,element); if(t->next==NULL){//插到尾节点后 t->next=p; p->previous=t; return head; } p->previous=t; p->next=t->next; t->next->previous=p; t->next=p; return head;}int main(){ struct node* head; head=(struct node*)malloc(sizeof(struct node)); head->next=NULL;
head->previous=NULL;
//Insert head=Insert(head,10); //Delete head=Delete(head,10); return 0;}
1 0
- 双链表
- 双链表
- 双链表
- 双链表
- 双链表
- 双链表
- 双链表
- 双链表
- 双链表
- 双链表
- 双链表
- 双链表
- 双链表
- 双链表
- 双链表
- 双链表
- 双链表
- 双链表
- 随笔
- Visual Studio常用的19个快捷键
- 关于mysql临时表 、truncate与delete
- 数据存储结构---顺序 链式 索引 散列
- HDU 5876 Sparse Graph 补图的最短路径BFS *
- 双链表
- Ubuntu修改分辨率
- Linux 通过 sendEmail 发送带附件邮件
- QT在JZ2440开发板上移植
- C++STL之string的用法总结
- mysql删除重复记录,保存Id最小的一条
- Hadoop技术内幕之MapReduce编程模型(下)
- 《数据结构与算法分析java语言描述》学习笔记二
- Android AlertDialog不显示弹窗问题