C++ 双向链表的简单操作
2014-09-16 22:03
357 查看
最近有一点懂链表的知识了,记录下来多复习巩固。
#include <iostream> using namespace std; typedef struct student{ int data; struct student *next; struct student *pre; }dnode; dnode *Create() { dnode *head,*p1,*p2; int x,cycle = 1; head = new dnode; p1 = head; while (cycle) { cin>>x; if (x != -1) { p2 = new dnode; p2->data = x; p1->next = p2; p2->pre = p1; p1 = p2; } else cycle = 0; } head = head->next; head->pre = NULL; p1->next = NULL; return head; } dnode *Del(dnode *head,int num) { dnode *p1,*p2; p1 = head; while (num !=p1->data&&p1->next!= NULL) { p1 = p1->next; } if (num == p1->data) { if(p1 == head) { head = head->next; head->pre = NULL; delete p1; } else if(p1->next == NULL) { p1->pre->next = NULL; delete p1; } else { p1->next->pre = p1->pre; p1->pre->next = p1->next; } } else { cout<<"can not find the num!\n"; } return head; } dnode *insert(dnode *head,int num) { dnode *p0,*p1; p1 = head; p0 = new dnode; p0->data = num; while (p0->data>p1->data&&p1->next!= NULL) { p1 = p1->next; } if (p0->data<=p1->data) { if (head == p1) { p0->next = p1; p1->pre = p0; head = p0; } else { p1->pre->next = p0; p0->next = p1; p0->pre = p1->pre; p1->pre = p0; } } else //插入链表尾 { p1->next = p0; p0->pre = p1; p0->next = NULL; } return head; } void print(dnode *head) { dnode *p1; p1 = head; if (p1 == NULL) { cout<<"the dnode is empty!\n"; } else { while(p1!= NULL) { cout<<p1->data<<" "; p1 = p1->next; } } } int main() { dnode *head,stud; head = Create(); print(head); return 0; }
相关文章推荐
- (C++版)链表(四)——实现双向循环链表创建、插入、删除等简单操作
- (C++版)链表(三)——实现双向链表的创建、插入、删除等简单操作
- (C++版)链表(四)——实现双向循环链表创建、插入、删除等简单操作
- 双向链表的简单操作
- C++ 双向链表 使用模板 增删操作
- 双向链表的简单操作
- (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作
- 【C++】实现双向链表的所有操作,包括逆置双链表(三种方法)
- (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作
- 简单双向链表C/C++版
- 双向链表的基础操作(C++实现)
- 简单数据结构之双向链表(C++实现)
- C++模拟双向链表的基本操作
- 双向链表简单操作
- 【C++】实现双向链表的所有操作,包括逆置双链表(三种方法)
- 双向链表的相关操作C++实现
- (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- 双向链表的简单操作
- 双向链表的相关操作C++实现