链表操作
来源:互联网 发布:notepad 安装sql插件 编辑:程序博客网 时间:2024/05/01 03:50
编程实现单链表的以下基本操作:建立单链表,查找单链表,插入单链表,删除单链表。
#include <iostream>#include <stdio.h>#include <stdlib.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOWusing namespace std;typedef int ElemType;typedef int Status;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;void CreatList_L(LinkList &L,int n){ L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; LinkList p; for(int i=n;i>0;i--) { p=(LinkList)malloc(sizeof(LNode)); cin>>p->data; p->next=L->next; L->next=p; }}Status ListInsert_L(LinkList &L,int i,ElemType e){ LinkList p; p=L; int j; j=0; while(p&&j<i-1) { p=p->next; j++; } if(!p||j>i-1) return ERROR; LinkList s; s=(LinkList)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; return OK;}Status ListDelete_L(LinkList &L,int i,ElemType &e){ LinkList p,q; p=L; int j; j=0; while(p&&j<i-1) { p=p->next; j++; } if(!(p->next)||j>i-1) return ERROR; q=p->next; p->next=q->next; e=q->data; free(q); return OK;}Status List_Alter(LinkList &L,int i,int j,ElemType &e){ //把第i个元素的值改为j,并用e保存原来第i个元素的值 LinkList p; p=L; int ele=0; while(p&&ele<i) { p=p->next; ele++; } if(!p||ele>i) return ERROR; e=p->data; p->data=j; return OK;}Status List_Search(LinkList &L,int i,ElemType &e){//查找第i个元素,并用e返回其值 LinkList p; p=L; int j=0; while(p) { p=p->next; j++; if(j==i) break; } if(!p) return ERROR; e=p->data; return OK;}void getLinkList(LinkList &L){ LinkList p; p=L->next; cout<<"当前链表:"<<endl; while(p) { cout<<p->data<<" "; p=p->next; } cout<<endl;}int main(){ LinkList L; int n,e; cout<<"请输入链表长度:"<<endl; cin>>n; cout<<"请逆序输入n个元素的值:"<<endl; CreatList_L(L,n); getLinkList(L); cout<<"请输入查找元素的位置:"<<endl; int i; cin>>i; if(List_Search(L,i,e)) { cout<<"该元素的值为:"<<e<<endl; } else { cout<<"查找失败!"<<endl; } cout<<"请输入想插入元素的位置:"<<endl; int j; cin>>j; cout<<"插入元素的值为:"<<endl; int p; cin>>p; if(ListInsert_L(L,j,p)) { cout<<"插入成功!"<<endl; getLinkList(L); } else { cout<<"插入失败!"<<endl; getLinkList(L); } cout<<"请输入想要删除元素的位置:"<<endl; int q; cin>>q; if(ListDelete_L(L,q,e)) { cout<<"删除成功!"<<endl; cout<<"删除元素的值为:"<<e<<endl; getLinkList(L); } else { cout<<"删除失败!"<<endl; getLinkList(L); } cout<<"请输入想要修改元素的位置:"<<endl; int k; cin>>k; cout<<"请输入想要修改元素的值:"<<endl; int l; cin>>l; if(List_Alter(L,k,l,e)) { cout<<"修改成功!"<<endl; cout<<"原来元素的值为:"<<e<<endl; getLinkList(L); } else { cout<<"修改失败!"<<endl; getLinkList(L); } return 0;}
0 0
- 实现链表基本操作(简单操作)
- 链表操作源程序
- 链表操作
- C++ 链表操作
- 链表的操作
- 链表操作源程序
- 链表的操作
- 链表的操作
- C++链表操作
- 链表操作
- 链表操作
- 链表基本操作
- LinkList链表操作
- 合并链表操作
- 链表简单操作
- 链表的操作
- 链表操作
- 操作链表
- 【Leetcode】Combine Two Tables
- ubuntu鼠标滚轮方向修改方法(运动方向和滚轮滚动方向一致)
- Python-格式化字符串
- Gym 100712C Street Lamps
- 《java入门第一季》之Date类案例,算一算你的恋爱纪念日
- 链表操作
- 2016"百度之星" - 资格赛(Astar Round1)
- OCP 考完了, 做个记录,分享下经验
- ViewPager,子页面组件绑定OnClick事件,使用DepthPageTransformer动画,事件失效、混乱
- 1 HTML介绍
- C:数组
- centos下安装JDK8的方法
- 回调函数
- Hadoop-2.4.1源码分析--MapReduce作业(job)提交源码跟踪