定义
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*linkList;
LNode x;
LinkList L,P;
尾插法建立单链表
void CreateListR(LinkList L)
{
int x;
LinkList p;
L = (LinkList)malloc(sizeof(LNode));
p = L;
scanf("%d",&x);
while(x!=-999)
{
p->next=(LinkList)malloc(sizeof(LNode));
p = p->next;
p->data = x;
scanf("%d",&x);
}
p->next = NULL;
}
头插法
void CreateListF(LinkList L)
{
int x;
LinkList p;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
scanf("%d",&x);
while(x!=-999)
{
s=LinkList)malloc(sizeof(LNode));
s->data=x;
s->next=L->next;
L->next=s;
scanf("%d",&x);
}
}
按值查找
LinkList Locate(LinkList L,int item)
{
ListList p;
p=L->next;
while(p&&p->data!=item)
p=p->next;
if(!p)
return NULL;
else
return (p);
插入到任意位置
int Inser(LinkList L,int i,int item)
{
LinkList p,s;
p = L;
int j=0;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1)
return false;
s=(LinkList)malloc(sizeof(LNode));
s->data=item;
s->next=p->next;
p->next=s;
return true;
}
删除指定节点
int Delete(LinkList L,int i)
{
LinkList p,q;
int j;
q=L;
j=0;
while(q&&j<i-1)
{
q=q->next;
++j;
}
if(!q||j>i-1)
return false;
p=q->next;
q->next=p->next;
free(p);
return true;