双向链表的有关操作(创建,遍历,插入,删除)
来源:互联网 发布:掌控网络 编辑:程序博客网 时间:2024/05/02 04:53
#include <cstdio>#include <iostream>#include <cstdlib>using namespace std;typedef struct node{ int ans; struct node *prior,*next;}Node,*DLinklist;//初始化头结点DLinklist init(DLinklist h){ h=(Node *)malloc(sizeof(Node)); h->prior=NULL; h->next=NULL; return h;}//头插法建立双链表DLinklist creat_head(){ DLinklist h,p; int data; h=init(h); cout<<"头插法输入数据(遇0结束)"<<endl; cin>>data; while(data) { p=(Node *)malloc(sizeof(Node)); p->ans=data; p->next=h->next; if(h->next!=NULL) h->next->prior=p; h->next=p; p->prior=h; cin>>data; } cout<<"头插法建立双链表成功"<<endl; return h;}//尾插法建立双链表DLinklist creat_tail(){ DLinklist h,p,s; int data; h=init(h); p=h; cout<<"尾插法输入数据(遇0结束)"<<endl; cin>>data; while(data) { s=(Node *)malloc(sizeof(Node)); s->ans=data; p->next=s; s->prior=p; p=s; cin>>data; } p->next=NULL; cout<<"尾插法建立双链表成功"<<endl; return h;}//在第n个节点之前插入元素DLinklist add(DLinklist h){ DLinklist p,s; int data; p=h; cout<<"输入要插入元素的位置(在此位置之前插入)"<<endl; cin>>data; for(int i=1;i<data;i++) p=p->next; cout<<"输入要插入的元素"<<endl; cin>>data; s=(Node *)malloc(sizeof(Node)); s->ans=data; s->next=p->next; s->prior=p; p->next->prior=s; p->next=s; cout<<"插入成功"<<endl; return h;}//删除指定节点DLinklist del(DLinklist h){ DLinklist p,s; int data; cout<<"输入要删除元素的值"<<endl; cin>>data; p=h->next; while(p!=NULL) { if(p->ans==data) break; p=p->next; } s=p; p->prior->next=p->next; p->next->prior=p->prior; free(s); cout<<"删除成功"<<endl; return h;}//遍历双链表void display(DLinklist h){ DLinklist p=(Node *)malloc(sizeof(Node)); p=h->next; while(p!=NULL) { cout<<p->ans<<endl; p=p->next; }}int main(){ DLinklist h; h=creat_head(); display(h); h=creat_tail(); display(h); add(h); display(h); del(h); display(h); return 0;}
0 0
- 双向链表的有关操作(创建,遍历,插入,删除)
- 双向循环链表的创建,插入,删除操作
- 双向循环链表的创建修改插入删除操作
- 双向链表的插入、删除、遍历
- 双向链表的创建/插入/删除
- 双向循环链表(创建·插入·删除·遍历)
- 单链表/双向链表的建立/遍历/插入/删除
- 链表的基础操作总结(链表创建,插入,删除,遍历等等)
- 单向链表的相关操作(创建,遍历,插入,删除,逆置)
- 顺序表的创建、遍历、插入、删除等操作demo
- (C++版)链表(三)——实现双向链表的创建、插入、删除等简单操作
- (C++版)链表(三)——实现双向链表的创建、插入、删除等简单操作
- C++单链表的操作(创建,删除,打印,遍历,插入)
- 双向链表创建、插入、删除
- 双向循环链表的创建,插入与删除。
- C++实现双向链表的创建,插入,修改,删除
- 单链表,双向链表的插入,查询,创建,删除,输出
- C语言---双向链表的插入、删除、查找操作
- 字符串循环右移n个字符
- 高精度模板之高精乘高精
- JavaScript正则表达式语法及使用范例大全
- 【SGU】105. Div 3 水题
- cin.get( )与cin.getline( )的区别
- 双向链表的有关操作(创建,遍历,插入,删除)
- Risk - UVa 567 Floyd
- Linux开启ssh服务,开启远程登入前提
- win8.1(x64)下搭建memcached
- hdu-1003
- 轻松解决宝宝所有吃饭难题,还给宝宝一个健壮的身体和聪明的脑袋
- Cocos2d-JS 快速入门_01 环境搭建(Mac && Windows集合版)
- 幼儿营养食谱幼儿喂养宝宝喂养
- codeforces 483C.Diverse Permutation