#include <iostream>
#include <malloc.h>
using namespace std;
typedef struct LNone{
int data;
struct LNone *next;
}LNone,*Listnext;
void InitList(Listnext &L){//创建头节点
L = new LNone;
L->next = NULL;
}
void CreaterList(Listnext &L){//给单链表赋值尾插法
int n;
Listnext p,r;
r=L;//r指针指向L节点
cout << "请输入节点的个数" << endl;
cin >> n;
cout << "请输入" <<n<<"个数"<< endl;
while(n--){
p = new LNone;
cin >>p->data;
p->next = NULL;
r->next = p;
r = p;//r指针指向新p节点
}
}
int GetList(Listnext L,int e){//查找链表中的值
Listnext p;
int j = 1;
p = L->next;//p指向L->next指向的节点位置
while(p != NULL && p->data != e){
j++;
p = p->next;//p指向p->next指向的节点位置
}
if(p == NULL)return -1;
return j;
}
void DelList(Listnext &L,int j){//删除链表中的值
Listnext p,r;
p = L->next;
int i = 1;
while(p != NULL && i < j-1){
p = p->next;
i++;
}
r = p->next;
p->next = r->next;
//cout <<p->data<< endl;
}
void InterList(Listnext &L,int e,int t){//单链表插入值
Listnext p,r;
p = L->next;int i = 1;
while(p != NULL && i<t-1){
p = p->next;
i++;
}
r = new LNone;//创造新的节点
r->data = e;//赋值
r->next = p->next;//新节点r->next指向p->next指向的节点位置
p->next = r;//p->next指向新创造的节点位置
}
void List(Listnext L){//遍历链表的值
Listnext p;
p = L->next;
while(p!=NULL){
cout << p->data<<' ';
p = p->next;
}
}
int main()
{
int e,t;
Listnext L;
InitList(L);
CreaterList(L);
List(L);
cout<<endl<< "请输入要删除的值" << endl;
cin >> e;
t=GetList(L,e);
DelList(L,t);
List(L);
cout<<endl<< "请输入要插入的值" << endl;
cin >> e;
cout<<endl<< "请输入要插入的位置" << endl;
cin >> t;
InterList(L,e,t);
List(L);
}
单链表基本操作:构造、赋值、查找、删除、遍历
最新推荐文章于 2024-03-18 20:36:43 发布
这篇博客介绍了如何使用C++实现链表的基本操作,包括初始化链表、尾插法赋值、查找、删除特定元素以及在指定位置插入新元素。通过示例代码详细展示了每个操作的过程,便于读者理解和学习C++中链表的数据结构操作。
摘要由CSDN通过智能技术生成