📄 2--数据结构-链表插入和删除.cpp
字号:
#include<iostream.h>
#include<stdlib.h>
struct lnode{
//------------分配链表储存结构------------
int data;
struct lnode *next;
}
//--------------------------------------------------------------------------------------------
ListInit_L(struct lnode **L)
{
//------------构造一个空的链表------------
*L=(struct lnode *)malloc(sizeof(struct lnode));
(*L)->next=NULL;
return **L;
}
CreateList_L(struct lnode **L,int n)
{
//------------往链表内加入元素------------
int i;
struct lnode *p;
cout<<"请输入元素: ";
for(i=n;i>0;--i)
{
p=(struct lnode*)malloc(sizeof(struct lnode));
cin>>p->data;
p->next=(*L)->next; (*L)->next=p;
}
}
GetElem_L(struct lnode **L,int i, int *e)
{
//------------L为带头结点的链表头指针------------
int j;
struct lnode *p;
p=(*L)->next;
j=1;
while(p&&j<i)
{
p=p->next; ++j;
}
if(!p||j>i)
return 0;
*e=p->data;
return 1;
}
ListInsert_L(struct lnode * *L,int i, int e)
{
//------------链表元素的插入------------
int j=0;
struct lnode *p=*L,*s;
while(p&&j<i-1)
{
p=p->next;++j;
}
if(!p||j>i-1)
return 0;
s=(struct lnode*)malloc(sizeof(struct lnode));
s->data=e; s->next=p->next;
p->next=s;
return 1;
}
ListDelete_L(struct lnode * *L,int i, int *e)
{
//------------链表元素的删除------------
int j=0;
struct lnode *p=*L,*q;
while(p->next&&j<i-1) {p=p->next;++j;}
if(!p||j>i-1) return 0;
q=p->next;
p->next=q->next;
*e=q->data;
free(q);
}
Print_L(struct lnode *L,int n)
{
//------------链表元素的打印------------
int i;
struct lnode *p=L->next;
cout<<"链表的元素位: ";
for(i=0;i<n;i++)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
//------------主程序------------
main(){
int e,n,m,o,i,j;
struct lnode *L;
ListInit_L(&L);
cout<<"请输入元素的个数: ";
cin>>n;
CreateList_L(&L,n);
Print_L(L,n);
GetElem_L(&L,n,&e);
cout<<"\n\n"<<"--------------以下对链表进行操作--------------"<<endl;
//--------------对链表进行操作------------------------------
do{
cout<<"输入插入位置:";
cin>>m;
cout<<"输入插入元素:";
cin>>o;
ListInsert_L(&L,m,o);
Print_L(L,n);
cout<<"输入删除位置:";
cin>>i;
ListDelete_L(&L,i,&e);
Print_L(L,n);
cout<<"删除元素"<<e<<endl;
cout<<"输入“1”继续操作,输入其他退出";
cin>>j;
}
while (j==1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -