C++单链表插入翻转更新删除等基本操作及实例运行结果
来源:互联网 发布:南海九江房价走势数据 编辑:程序博客网 时间:2024/06/08 02:35
链表是一种复杂的数据结构,其数据之间的相互关系使链表分成三种:单链表、循环链表、双向链表,这里介绍单链表。
我们希望构造动态的数组,随时可以调整数组的大小,以满足不同问题的需要。链表可以满足我们这种需求。它在程序的执行过程中根据需要,有数据存储就向系统要求申请存储空间,不会对存储区的浪费。链表中的每一个节点的数据类型为结构体类型,节点有两个成员:整型成员和指向下一个结构体类型节点的指针。
c++代码
#include<iostream>using namespace std;//定义节点struct node{ int data; node *next;};//定义节点类class list{public: list(); void insert(int val); void reverse(); void updata(int val,int add_val); void remove(int val); void print();private: node *head; node* find(int val);};//查找节点位置的函数node* list::find(int val){ node *p=head; for(;p;p=p->next) { if(p->next->data==val) break; } return p;}list::list()//这是构造函数,初始化对象的数据成员,小工程可使用系统默认的析构函数{ head=NULL;//头结点不放数据}//按顺序插入void list::insert(int val){ node *p=new node(); p->data=val; p->next=NULL; if(head==NULL) //空链表 { head=p; } else { node *q,*r; q=head; while(q&&q->data<=p->data) { r=q; q=q->next; } if(q!=NULL) { p->next=q; r->next=p; } else { p->next=NULL; r->next=p; } }}//翻转元素void list::reverse() { if(head==NULL) return; node * p = head; node * q = head->next; node * temp; while(q) { temp=q->next; q->next=p; p=q; q=temp; } head->next=NULL; head=p; }//更新指定数据void list::updata(int val,int add_val) { node *p=find(val); p->next->data=add_val; }//删除元素void list::remove(int val){ if(head==NULL) { cout<<"链表为空时不能删除元素"<<endl; } else if(head->data==val) { head=head->next; } else { int flag=1;//删除完全标志 while(flag) { node *p=head; node *q; while(p&&p->data!=val) { q=p; p=p->next; } if(p) q->next=p->next; else flag=0; } }}//输出void list::print(){ node *p; p=head; if(head==NULL) { cout<<"链表为空"<<endl; } else { while(p) { cout<<p->data<<" "; p=p->next; } cout<<endl; }}int main(){ list List; for(int i=0;i<20;++i) List.insert(i+1); cout<<"单链表为:"; List.print(); List.reverse(); cout<<"翻转后的链表为:"; List.print(); List.updata(5,555); cout<<"更新数据后的链表为(这里将5替换为555):"; List.print(); List.remove(10); cout<<"删除元素10后的链表为:"; List.print(); return 0;}
运行结果
阅读全文
0 0
- C++单链表插入翻转更新删除等基本操作及实例运行结果
- 数据结构(c语言版)顺序表的建立、初始化、插入、删除、遍历等12个基本操作及测试
- Java实现单链表插入删除等基本操作
- linq 基本操作(删除、更新、插入)
- 单链表插入删除等操作
- C语言实现顺序表的插入、删除、查找、遍历等基本操作
- 二叉查找树的查找、插入、删除、释放等基本操作的实现(C语言)
- 最大堆的初始化、删除、插入等基本操作
- sqlite3的基本操作(插入,删除,更新,查询)
- c/c++ 单链表 创建 插入 删除 翻转 打印
- 单链表的创建、插入、删除等操作
- 单链表的初始化,插入删除等操作
- 单链表的创建,插入删除等操作
- 单链表的创建、插入删除等操作
- 图的邻接矩阵表示及插入删除等操作
- 用C语言编写一个包含链表的初始化、插入、删除、查找等基本操作的程序。
- c语言:顺序表的实现(一) 创建,插入,删除,查找,输出等基本操作实现
- 单链表基本操作:创建、插入、删除、获取
- Qt栅格布局管理器(QGridLayout)
- ubuntu安装EnvironmentError: mysql_config not found错误
- 在本地配置虚拟机的经验lnmp安装
- oracle关键词使用注意
- Hdoj 2008 数值统计
- C++单链表插入翻转更新删除等基本操作及实例运行结果
- Ubuntu下git的应用及问题
- Hbase regionserver 启动不了的解决方案
- JS正则表达式
- 免安装mysql服务配置
- BZOJ1821 [JSOI2010]Group 部落划分 贪心+并查集
- Cmder使用总结
- extern关键字
- Spring Cloud 实践(一):Spring Cloud 介绍