链表操作
来源:互联网 发布:红蚂蚁网络与阿里巴巴 编辑:程序博客网 时间:2024/06/03 19:09
/** 程序的版权和版本声明部分* Copyright (c)2014, 烟台大学计算机学院学生* All rightsreserved.* 文件名称: fibnacci.cpp* 作 者:高古尊* 完成日期:2014年3月20日* 版本号: v1.0** 输入描述:* 问题描述:* 程序输出:* 问题分析:*/#include<iostream>using namespace std;struct Node{ int data;//结点的数据 struct Node *next;//指向下一结点};Node *head=NULL;//将链表头定义为全局变量,以便于后面操作void make_list();//建立链表void out_list();//输出链表void make_list2();//建立链表2void search(int x);//输出链表中是否有值为 x 的结点void out_list2();//输出链表2void delete_first_node();//删除链表中的第一个结点void delete_node(int x);//删除结点值为 x 的结点void make_list3();//建立链表3void out_list3();//输出链表3void insert(int x);//将值为 x 的结点插入到由 make_list3 建立起来的有序链表中void paisu();int main( ){ int x; make_list(); out_list(); make_list2(); out_list2(); cout<<"请输入要找的节点:"; cin>>x; search(x); delete_first_node(); cout<<"删除第一个节点后链表为"; out_list2(); cout<<"请输入要删除的节点:"; cin>>x; delete_node(x); out_list2(); return 0;}void make_list(){ int n; Node *p; cout<<"输入若干正数(以 0 或一个负数结束)建立链表:"; cin>>n; while(n>0)//输入若干正数建立链表,输入非正数时,建立过程结束 { p=new Node;//新建结点 p->data=n; p->next=head;//新建的结点指向原先的链表头 head=p;//链表头赋值为新建的节点,这样,新结点总是链表头 cin>>n;//输入下一个数,准备建立下一个结点 } return ;}void make_list2(){ int n; Node *p2; head=NULL; cout<<"输入若干正数(以 0 或一个负数结束)建立链表:"; cin>>n; while(n>0)//输入若干正数建立链表,输入非正数时,建立过程结束 { p2=new Node;//新建结点 p2->data=n; p2->next=head;//新建的结点指向原先的链表头 head=p2;//链表头赋值为新建的节点,这样,新结点总是链表头 cin>>n;//输入下一个数,准备建立下一个结点 } return;}void make_list3(){ int n; Node *p3; head=NULL; cout<<"输入若干正数(以 0 或一个负数结束)建立链表:"; cin>>n; while(n>0)//输入若干正数建立链表,输入非正数时,建立过程结束 { p3=new Node;//新建结点 p3->data=n; p3->next=head;//新建的结点指向原先的链表头 head=p3;//链表头赋值为新建的节点,这样,新结点总是链表头 cin>>n;//输入下一个数,准备建立下一个结点 }}void out_list(){ Node *p=head; cout<<"链表中的数据为:"<<endl; while(p!=NULL) { cout<<p->data<<" "; p=p->next; } cout<<endl; return;}void out_list2(){ Node *p2; p2=head; cout<<"链表中的数据为:"<<endl; while(p2!=NULL) { cout<<p2->data<<" "; p2=p2->next; } cout<<endl; return;}void out_list3(){ Node *p3; p3=head; cout<<"链表中的数据为:"<<endl; while(p3!=NULL) { cout<<p3->data<<" "; p3=p3->next; } cout<<endl; return;}void search(int x){ Node *p2=head; while(1) { if(x==p2->data) { cout<<"节点存在."<<endl; break; } else { p2=p2->next; if(p2==NULL) { cout<<"节点不存在."<<endl; break; } } } return ;}void delete_first_node(){ Node *p2=head; if (p2!=NULL) { head= p2->next; delete p2; cout<<"删除了首结点."<<endl; } else { cout<<"空链表,不能删除."<<endl; } return ;}void delete_node(int x){ Node *p2,*q; if (head==NULL) cout<<"空链表,不能删除"; else { //要删除的恰是首结点(不排除连续有若干个结点值为x), while(head!=NULL&&head->data==x) { p2=head; head=head->next; delete p2; } if(head!=NULL) { p2=head; q=p2; while(p2!=NULL) { if(p2->data==x)//q就是该删除的结点 { q->next=p2->next; delete p2; } else //q不该删除,继续考察下一个 { q=p2; } p2=p2->next; //总是p的下一个结点 } } } return;}
0 0
- 实现链表基本操作(简单操作)
- 链表操作源程序
- 链表操作
- C++ 链表操作
- 链表的操作
- 链表操作源程序
- 链表的操作
- 链表的操作
- C++链表操作
- 链表操作
- 链表操作
- 链表基本操作
- LinkList链表操作
- 合并链表操作
- 链表简单操作
- 链表的操作
- 链表操作
- 操作链表
- php对象与数组的区别,类与对象的联系
- <strong>和<b>的区别
- Android sqlite本地数据库
- 在eclipse中查看jdk源码
- CF #div.1 B.good sequences
- 链表操作
- UICollectionView介绍
- UIWindow的一点儿思考
- Longest Palindromic Substring
- java的接口问题!
- c语言实现抽象数据类型(信息隐藏)
- java接口的细节!
- VC 6.0 编译支持中文的LUA5.23静态库
- c操作lua栈 6