The basic operation of a single linked list
LinkList CreatList(LinkList &L);
LinkList List_HeadInsert(LinkList &L);
LinkList List_TailInsert(LinkList &L);
LinkList Delete_i(LinkList &L,int i);
LinkList Delete_e(LinkList &L,int e);
LNode *GetElem(LinkList &L,int i);
LNode *LocateElem(LinkList &L,int e);
LinkList InsertList(LinkList &L,int i,int e);
void display(LNode *head);
Structure is defined
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
The complete code
#include "stdafx.h"
#include<iostream>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList List_HeadInsert(LinkList &L);
LinkList List_TailInsert(LinkList &L);
LinkList Delete_i(LinkList &L,int i);
LinkList Delete_e(LinkList &L,int e);
LNode *LocateElem(LinkList L,int i);
LNode *GetElem(LinkList L,int e);
LinkList CreatList(LinkList &L);
LinkList InsertList(LinkList &L,int i,int e);
void display(LNode *head);
int _tmain(int argc, _TCHAR* argv[])
{
LNode *p;LinkList L;
cout<<"头插法创建新链表(-1结束):";
List_HeadInsert(L);
cout<<"链表为:";
display(L);
cout<<"尾插法创建新链表(-1结束):";
List_TailInsert(L);
cout<<"链表为:";
display(L);
cout<<"创建默认链表L:";
CreatList(L);
display(L);
InsertList(L,6,666);
cout<<"在第6个位置插入666:";
display(L);
Delete_i(L,11);
cout<<"删除第11个元素:";
display(L);
Delete_e(L,4);
cout<<"删除4:";
display(L);
system("pause");
return 0;
}
LinkList List_HeadInsert(LinkList &L)
{
L=new LNode;
L->next=NULL;
LNode *p;int x;
cin>>x;
while(x!=-1)
{
p=new LNode;
p->data=x;
p->next=L->next;
L->next=p;
cin>>x;
}
return L;
}
LinkList List_TailInsert(LinkList &L)
{
L=new LNode;
LNode *p,*r=L;int x;
cin>>x;
while(x!=-1)
{
p=new LNode;
p->data=x;
r->next=p;
r=p;
cin>>x;
}
r->next=NULL;
return L;
}
LNode *GetElem(LinkList L,int i)
{
if(i==1)
return L->next;
if(i<1)
return false;
LNode *p=L->next;
int x=1;
while(p!=NULL&&x<i)
{
p=p->next;
x++;
}
return p;
}
LNode *LocateElem(LinkList L,int e)
{
LNode *p=L->next;
while(p!=NULL&&p->data!=e)
{
p=p->next;
}
if(p!=NULL)
return p;
else
return false;
}
LinkList Delete_i(LinkList &L,int i)
{
if(i==1)
{
LNode *p=L->next;
L->next=p->next;
free(p);
}
LNode *p,*q=GetElem(L,i-1);
p=q->next;
q->next=p->next;
free(p);
return L;
}
LinkList Delete_e(LinkList &L,int e)
{
LNode *p,*q=LocateElem(L,e);
p=q->next;
q->data=p->data;
q->next=p->next;
free(p);
return L;
}
LinkList CreatList(LinkList &L)
{
L=new LNode;
LNode *p,*r=L;
int a[10]={1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<10;i++)
{
p=new LNode;
p->data=a[i];
r->next=p;
r=p;
}
r->next=NULL;
return L;
}
LinkList InsertList(LinkList &L,int i,int e)
{
if(i==1)
{
LNode *p=new LNode;
p->data=e;
p->next=L->next;
L->next=p;
}
LNode *p,*q=GetElem(L,i-1);
p=new LNode;
p->data=e;
p->next=q->next;
q->next=p;
return L;
}
void display(LNode *head)
{
LNode *p=head->next;
while(p)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl<<endl;
}