线性链表的实现插入和删除
#include
#include
#include
using namespace std;
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define ERROR 0
#define OK 1
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
void CreatList_L(LinkList &L,int n)
{
LinkList p;
L=(LinkList)malloc(sizeof(LNode));//cout<<"***************************8";
L->next=NULL;
for(int i=n;i>0;--i)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=L->next;
L->next=p;
}
}
int ListInsert_L(LinkList &L,int i,double e)
{
LinkList p,s;
int j=0;
p=L;
while(p&&j
{
p=p->next;
++j;
}
if(!p||j>i-1)
return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return OK;
}
int ListDelete_L(LinkList &L,int i,int &e)
{
LinkList p=L,q;
int j=0;
while(p->next&&j
{
p=p->next;
++j;
}
if(!p->data||j>i-1)
return ERROR;
q=p->next;
p->next=q->next;
e=q->data;
free(q);
return OK;
}
void output(LinkList L)
{
// L=L->next;
while(L->next!=NULL)
{
L=L->next;
cout<<L->data<<" ";
}
}
int main()
{
LinkList L;
int i,j,r;
int m,n;
cout<<"请输入想要创建链表的长度:";cin>>r;
CreatList_L(L,r);
output(L);
cout<<endl<<"请输入想要插入的元素以及想要插入的位置:"<<endl;
cin>>m>>i;
ListInsert_L(L,i,m);
output(L);
cout<<endl<<"请输入想要删除的位置:"<<endl;
cin>>j;
ListDelete_L(L,j,n);
output(L);
cout<<endl;
return 0;
}