您的位置:首页 > 编程语言

每天一段小代码——链表

2013-08-16 19:41 197 查看
#include<iostream>
using namespace std;
typedef struct Lnode{
int data;
struct Lnode *next;
}*LinkList;
void CreatList(LinkList &L,int n)
{
int a;
LinkList s;
L=(LinkList)malloc(sizeof(Lnode));
L->next=NULL;
for(int i=0;i<n;i++)
{
s=(LinkList)malloc(sizeof(Lnode));
scanf("%d",&a);
s->data=a;
s->next=L->next;L->next=s;
}
}
int LocateList(LinkList &L,int i)
{
LinkList p=L->next;
int j=1,
e;
while(p&&j<i)
{p=p->next;j++;}
e=p->data;
return e;
}
//尾插
void R_InsertList(LinkList &L,int e)
{
LinkList p=L;
while(p->next) p=p->next;
LinkList s=(LinkList)malloc(sizeof(Lnode));
s->data=e;
s->next=NULL;
p->next=s;
}
//头插
void H_InsertList(LinkList &L,int e)
{
LinkList s=(LinkList)malloc(sizeof(Lnode));
s->data=e;
s->next=L->next;
L->next=s;
}
void InsertList(LinkList &L,int i,int e)
{
LinkList p=L;
int j=0;
while(p&&j<i-1){p=p->next;j++;}
LinkList s=(LinkList)malloc(sizeof(Lnode));
s->data=e;
s->next=p->next;
p->next=s;
}
void DeletList(LinkList &L,int i)
{
LinkList p=L;
int j=0;
while(p->next&&j<i-1)
{p=p->next;j++;}
p->next=p->next->next;
}
void ShowElem(LinkList L)
{
for(LinkList p=L->next;p!=NULL;p=p->next)
cout<<p->data<<"  ";
}
int main()
{
LinkList L;
CreatList(L,4);
ShowElem(L);
cout<<endl;
R_InsertList(L,7);
ShowElem(L);
cout<<endl;
H_InsertList(L,1);
ShowElem(L);
cout<<endl;
InsertList(L,1,1);
ShowElem(L);
cout<<endl;
DeletList(L,1);
ShowElem(L);
cout<<endl;
cout<<LocateList(L,2);
system("pause");
}
这个代码的重点是一·LocateList()函数的指针的指向,和Insert()函数,Del()函数的指针的指向区别;二 上述几个函数中,while()中的条件的判断,比如insert是p , del是p->next

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息