双向链表
来源:互联网 发布:软件著作权转让官费 编辑:程序博客网 时间:2024/06/03 22:45
双向链表 Dlelist
1 #include<iostream> 2 using namespace std; 3 4 struct ListNode 5 { 6 int num; 7 char name[20]; 8 ListNode *link; 9 }; 10 11 ListNode *first,*last; 12 13 void Create()//建立一个链表 14 { 15 ListNode *p,*q; 16 int i; 17 q=first;//新节点要把节点设为空 18 while(1) 19 { 20 p=new ListNode; 21 cout<<"输入学号:"; 22 cin>>p->num; 23 cout<<"输入姓名拼音:"; 24 cin>>p->name; 25 p->link=q->link; 26 q->link=p; 27 q=p; 28 cout<<"是否继续?(1/0)"; 29 cin>>i; 30 if(i==0) 31 { 32 cout<<"链表建立完毕。"<<endl; 33 break; 34 } 35 } 36 last=p; 37 } 38 39 void Output()//输出 40 { 41 ListNode *p=first->link; 42 while(p!=NULL) 43 { 44 cout<<"学号:"<<p->num<<":"; 45 cout<<"姓名:"<<p->name<<endl; 46 p=p->link; 47 } 48 } 49 50 ListNode* FindIndex(const int i)//查找第i个元素 51 { 52 if(i<=-1) return first; 53 ListNode *p=first->link; 54 int j=0; 55 while(p!=NULL&&j<i) 56 { 57 if(p->num==i) break; 58 p=p->link; 59 j++; 60 } 61 return p; 62 } 63 64 ListNode* Insert(int valua,int i)//插入一个值 65 { 66 ListNode *p,*q; 67 q=new ListNode;//申请一个新节点 68 p=FindIndex(i-1);//找到插入位置的前一位置,在它的后方插入VALUA 69 if(p==NULL) return NULL; 70 q->link=p->link; 71 q->num=valua; 72 p->link=q; 73 if(q->link==NULL) 74 last=q; 75 return q; 76 } 77 78 void RemoveAfter(ListNode *cl)//删除CL节点之后的一个节点 79 { 80 ListNode *newlink=cl->link; 81 if(newlink!=NULL) 82 { 83 cl->link=newlink->link; 84 delete newlink; 85 } 86 } 87 88 void RemoveCur(ListNode *cl)//删除单个节点 89 { 90 ListNode *p=first; 91 while(p->link!=cl) 92 { 93 p=p->link; 94 } 95 p->link=cl->link; 96 delete cl; 97 } 98 99 void length()//计算链表长度100 {101 int len=0;102 ListNode *p=first->link;103 while(p!=NULL)104 {105 p=p->link;106 len++;107 }108 cout<<"链表长度为:"<<len<<endl;109 }110 111 112 113 void main()114 {115 first=new ListNode;116 first->link=NULL;117 118 Create();119 Output();120 121 int m;122 cout<<"查找学号:";123 cin>>m;124 ListNode *n=FindIndex(m);125 cout<<n->num<<":"<<n->name<<endl;126 127 int del;128 cout<<"需要删除的学号:";129 cin>>del;130 ListNode *delet=FindIndex(del);131 RemoveCur(delet);132 133 Output();134 length();135 }
0 0
- SzNOI 双向约瑟夫(双向链表)
- 双向链表&&堆栈
- 双向链表
- 使用双向链表
- 双向链表
- 双向循环链表
- 双向循环链表
- 双向链表
- 实现双向链表
- 双向循环链表
- 建立双向链表
- 双向链表
- 双向链表
- 双向循环链表
- 双向链表
- 链表-双向链表
- 双向链表
- 双向动态链表
- 如何用VB.net快速读取较大的xml文件
- 开发库 C++
- AD中用户帐户属性userAccountControl
- 心的体会之Response 返回xml,json
- 重载运算符函数的选择
- 双向链表
- Command返回的阅读器的作用
- Spring学习(2)——容器简介与Spring结构
- Hello Netgen - 遵循LGPL开源协议的网格剖分程序
- 单链表
- 二维指针数组
- java 锁实例
- linux 线程同步
- maven pom.xml配置讲解