概述
准备工作(定义类型,定义存储结构)
#include<iostream>
using namespace std;
typedef int ElemType;
typedef bool Status;
#define OK true
#define ERROR false
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
取值:取第i个位置上的数据,这里参数使用引用原因是不用返回值,对传进来的参数直接进行修改
//取值:取第i个位置上的数据,这里参数使用引用原因是不用返回值,对传进来的参数直接进行修改
Status GetElem(LinkList L,int i,ElemType &e){
LinkList p = L->next;
int j=0;
while(p && j < (i-1)){
p = p->next;
j++;
}
e = p->data;
cout << "第"<<i<<"个位置上的数据是:"<<e<<endl;
return OK;
}
查找:按值查找,查找成功,返回节点地址值
//查找:按值查找,查找成功,返回节点地址值
LNode *LocateElem(LinkList L,int search){
LinkList p = L->next;
int i=0;
while(p && p->data != search){
p = p->next;
i++;
}
cout <<"查找数据"<<search<<"对应的"<< "index:"<<i << endl;
return p;
}
插入:将值为e的新节点插入到表的第i个节点上
//插入:将值为e的新节点插入到表的第i个节点上
Status ListInsert(LinkList &L, ElemType data,int index){
LinkList p,s;
s = L;
int i = 0;
while(s && i <(index -1)){
s=s->next;
i++;
}
if(!s||i>index-1) return ERROR;
p = new LNode;
p->data = data;
p->next = s->next;
s->next = p;
return OK;
}
删除:删除单链表的第i个节点
//删除:删除单链表的第i个节点
Status ListDelete(LinkList &L, int i){
LinkList p=L;
int j=0;
LinkList q;
while((p->next) && j<(i-1)){
p=p->next;
j++;
}
if(!(p->next)||(j>i-1)) return ERROR;
q = p->next;
p->next = q->next;
delete q;
return OK;
}
建单链表:创建无头单链表,输入数据
//创建单链表:创建无头单链表,输入数据
void CreateList_H(LinkList &L, int n){
L = new LNode;
L->next = NULL;
LinkList p;
for(int i=0;i<n;i++){
p = new LNode;
//cout <<"please input the data of node:";
p->data = (i+1);
//cin >> p->data;
p->next = L->next;
L->next = p;
}
}
输出数据
//输出数据
void showdata(LinkList L){
L=L->next;
while(L){
cout<<L->data<<endl;
L=L->next;
}
}
主函数
int main(){
LinkList L;
CreateList_H(L,5);
showdata(L);
cout<<"after insert:"<<endl;
ListInsert(L,6,3);
showdata(L);
cout << "数据6的地址:"<<LocateElem(L,5) << endl;
int e;
GetElem(L,3,e);
cout<<"删除第3个位置得数据"<<endl;
ListDelete(L,3);
showdata(L);
return 0;
}
最后
以上就是年轻白猫为你收集整理的对单链表的基本操作的全部内容,希望文章能够帮你解决对单链表的基本操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复