#include<iostream>
#include<cstdlib>
#include<iomanip>
using namespace std;
typedef struct LNode
{
int data;
LNode *next;
}LNode;
void InitList(LNode *&L)//初始化
{
L=new LNode;
L->data = 0;
L->next = NULL;
}
void CreateList_Head(LNode *L, int a[], int n)//头插法建表
{
LNode *p = NULL;
for(int i=0;i<n;++i )
{
p=new LNode;
p->data = a[i];
p->next = L->next;
L->next =p;
++L->data;
}
}
void CreateList_Tail(LNode *L, int a[], int n) //尾插法建表
{
LNode *p=NULL, *r=L;
for(int i=0;i<n;++i)
{
p=new LNode;
p->data = a[i];
p->next = NULL;
r->next = p;
r = p;
++L->data;
}
}
int ListInsert(LNode *L, int i, int e)//插入元素
{
int j=0;
LNode *p=L;
while( ++j<i &&NULL != p->next )
{
p = p->next;
}
if(j==i)
{
LNode *s=new LNode;
s->data = e;
s->next = p->next;
p->next =s;
++L->data;
return 1;
}
if(NULL == p->next)
return 0;
}
int ListDelete(LNode *L, int i, int &e) //删除元素
{
int j=0;
LNode *p=L;
while( ++j<i &&NULL != p->next )
{
p=p->next;
}
if(j==i)
{
LNode *q=p->next;
e = q->data;
p->next = q->next;
free(q);
--L->data;
return 1;
}
if(NULL == p->next)
{
return 0;
}
}
void PrintList(LNode *L)//打印单链表
{
LNode *p = L->next;
while(NULL != p)
{
cout<<setw(3)<<p->data;
p=p->next;
}
cout<<endl;
}
int main(void)
{
const int N=5;
LNode *L=NULL;
int a[] = {1,2,3,4,5};
InitList(L);
CreateList_Head(L,a,N);
PrintList(L);
ListInsert(L,1,10);
PrintList(L);
system("pause");
return 0;
}
#include<cstdlib>
#include<iomanip>
using namespace std;
typedef struct LNode
{
int data;
LNode *next;
}LNode;
void InitList(LNode *&L)//初始化
{
L=new LNode;
L->data = 0;
L->next = NULL;
}
void CreateList_Head(LNode *L, int a[], int n)//头插法建表
{
LNode *p = NULL;
for(int i=0;i<n;++i )
{
p=new LNode;
p->data = a[i];
p->next = L->next;
L->next =p;
++L->data;
}
}
void CreateList_Tail(LNode *L, int a[], int n) //尾插法建表
{
LNode *p=NULL, *r=L;
for(int i=0;i<n;++i)
{
p=new LNode;
p->data = a[i];
p->next = NULL;
r->next = p;
r = p;
++L->data;
}
}
int ListInsert(LNode *L, int i, int e)//插入元素
{
int j=0;
LNode *p=L;
while( ++j<i &&NULL != p->next )
{
p = p->next;
}
if(j==i)
{
LNode *s=new LNode;
s->data = e;
s->next = p->next;
p->next =s;
++L->data;
return 1;
}
if(NULL == p->next)
return 0;
}
int ListDelete(LNode *L, int i, int &e) //删除元素
{
int j=0;
LNode *p=L;
while( ++j<i &&NULL != p->next )
{
p=p->next;
}
if(j==i)
{
LNode *q=p->next;
e = q->data;
p->next = q->next;
free(q);
--L->data;
return 1;
}
if(NULL == p->next)
{
return 0;
}
}
void PrintList(LNode *L)//打印单链表
{
LNode *p = L->next;
while(NULL != p)
{
cout<<setw(3)<<p->data;
p=p->next;
}
cout<<endl;
}
int main(void)
{
const int N=5;
LNode *L=NULL;
int a[] = {1,2,3,4,5};
InitList(L);
CreateList_Head(L,a,N);
PrintList(L);
ListInsert(L,1,10);
PrintList(L);
system("pause");
return 0;
}