链表的创建,插入,删除,逆序
来源:互联网 发布:mp3刷机软件 编辑:程序博客网 时间:2024/05/22 13:32
今晚折腾了一晚,发现还是临界条件没设置好,下面是更新版的:
#include<iostream.h>struct Node{int num;Node *next;Node *LChild;Node *RChild;};Node *Creat(){int n=0;Node * p1,*p2,*head;//Node *p1,p2,head和这个声明不同head=NULL;p1=new Node; p2=new Node;head=new Node;head->next=p2;head->LChild=NULL;head->RChild=NULL;cout<<"input a num"<<endl;cin>>p2->num;while(1){ cout<<"input a num"<<endl;cin>>p1->num;if(p1->num==0){ p2->next=NULL;break;}p1->next=NULL;//系统保证指向空指针的地方不指向任何函数或变量 p2->next=p1; p2=p1;p1=new Node;p1->LChild=NULL; p1->RChild=NULL;}//p2=NULL并没有作用,是因为改变的是p2指针的值,而p2指针指向的地方的值没变 //p2=NULL;cout<<"after"<<endl;return head;}void Print(Node *a){Node *p=a->next;while(p!=NULL){ cout<<p->num<<endl; p=p->next;}}void Insert(Node *a){Node *p=new Node; cout<<"input a num"<<endl;cin>>p->num;p->next=a->next;a->next=p;}void Delete(Node *a){int b;int n=0; cout<<"input a num that you want to delete"<<endl;cin>>b; Node *p=a;Node *p1=p->next; while(p1->num!=0){ if(p1->num==b) { p->next=p1->next; n=1; delete p1; break; } p=p1; p1=p1->next;}if(n==0)cout<<"没有这个数"<<endl;}Node *ReTail(Node *a){ Node *t=new Node; //cout<<a->num<<endl; a的初始值是没有确定的 Node *p=a->next; Node *q=a->next->next; while(q!=NULL) { if(p==a->next) { p->next=NULL; t=q->next; q->next=p; p=q; q=t; delete a; continue; } t=q->next; q->next=p; p=q; q=t; } Node *head; head = new Node; head->next=p; return head;}void main(){Node *a;//a=new Node; //不加a=new Node; 直接cout<<a->num<<endl; 就会出错,因为还没初始化a=Creat(); cout<<endl; cout<<endl; cout<<endl; Print(a); cout<<endl; cout<<endl; cout<<endl; Insert(a); cout<<endl; cout<<endl; cout<<endl; Print(a); cout<<endl; cout<<endl; cout<<endl; Delete(a); cout<<endl; cout<<endl; cout<<endl; Print(a); cout<<endl; cout<<endl; cout<<endl; Node *q=ReTail(a); cout<<endl; cout<<endl; cout<<endl; Print(q);}
- 链表的创建,插入,删除,逆序
- 链表的创建,删除,插入,逆序,打印
- 单链表的创建,插入,删除以及逆序
- 数据结构:链表的基本操作(创建,删除,插入,逆序,摧毁)
- 链表的创建 查找 排序 插入 删除 逆序 长度 显示
- 循环链表的创建、插入、删除、逆序、显示(C++实现)
- C数据结构链表的插入,删除,逆序…
- C++单链表的创建插入删除以及逆序操作
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 顺序表的创建,插入,删除,查找,逆序以及合并两个有序的顺序表
- 链表的创建、逆序显示、插入显示
- 链表的插入、删除、逆序打印、输出倒数第N个、链表逆序
- 线性表---双向链表(创建、正序逆序打印、插入、删除)
- 单链表创建及其插入,删除,逆序
- 链表的创建,插入,删除
- 链表的创建、插入、删除操作
- 链表的创建、查询、插入、删除
- 预处理语句
- QTP-自动化测试用例设计原则
- 编程之美1.13——NIM(3)两堆石头的游戏
- Linux——不同体系结构下获取current
- 面向对象程序设计(OOP-Object Oriented Programming)
- 链表的创建,插入,删除,逆序
- 修改Apache的最大连接数
- Linux Slab分配器(七)--销毁缓存
- sql 中outer apply 和XML 并用
- QTP-录制与回放
- TFS 中文件夹和分支的区别
- 写入文本文档
- VS2008 搭配 SQL server 2005 express 使用解决方法
- 黑马程序员-java学习之多线程技术