#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
}LinkList;
LinkList *InitList(LinkList *L)
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
return L;
}
//头插法
int HeadInsItem(LinkList *L,int item)
{
LinkList *p=(LinkList *)malloc(sizeof(LinkList));
p->data=item;
p->next=L->next;
L->next=p;
return 1;
}
//尾插法
int TailInsItem(LinkList *L,int item)
{
LinkList *p=L;
LinkList *q=(LinkList *)malloc(sizeof(LinkList));
q->data=item;
q->next=NULL;
while(p->next!=NULL)
{
p=p->next;
}
p->next=q;
return 1;
}
//前插法
int FrontInsItem(LinkList *L,int item,int pos)
{
int i=1;
LinkList *p=L;
LinkList *q=(LinkList *)malloc(sizeof(LinkList));
q->data=item;
if(pos<1)
{
printf("Position is error!\n");
return 0;
}
if(L->next==NULL)
{
if(pos==1)
{
L->next=q;
q->next=NULL;
return 1;
}
else
{
printf("List is empty,position is error!\n");
return 0;
}
}
while(p->next!=NULL&&i<pos)
{
p=p->next;
i++;
}
if(p->next==NULL)
{
printf("Position is exist!\n");
return 0;
}
q->next=p->next;
p->next=q;
return 1;
}
//后插法
int RearInsItem(LinkList *L,int item,int pos)
{
int i=1;
LinkList *p=L;
LinkList *q=(LinkList *)malloc(sizeof(LinkList));
q->data=item;
if(pos<1)
{
printf("Position is error!\n");
return 0;
}
if(L->next==NULL)
{
if(pos==1)
{
L->next=q;
q->next=NULL;
return 1;
}
else
{
printf("List is empty,position is error!\n");
return 0;
}
}
while(p->next!=NULL&&i<=pos)
{
p=p->next;
i++;
}
if(p==NULL)
{
printf("Position is not exist!\n");
return 0;
}
q->next=p->next;
p->next=q;
return 1;
}
//删除操作(Pos)
int PosDelItem(LinkList *L,int pos)
{
int i=1;
LinkList *p=L;
if(pos<1)
{
printf("Position is error!\n");
return 0;
}
if(L->next==NULL)
{
printf("List is empty!\n");
return 0;
}
while(p!=NULL&&i<pos)
{
p=p->next;
i++;
}
if(p->next==NULL)
{
printf("The node is not exist!\n");
return 0;
}
p->next=p->next->next;
return 1;
}
//删除操作(value)
int ValDelItem(LinkList *L,int item)
{
LinkList *p=L;
LinkList *q=p->next;
if(L->next==NULL)
{
printf("List is empty!\n");
return 0;
}
while(q!=NULL)
{
if(q->data!=item)
{
p=q;
q=q->next;
}
else
{
break;
}
}
if(q==NULL)
{
printf("The node is not exist!\n");
return 0;
}
p->next=q->next;
return 1;
}
//遍历链表
int ListTraverse(LinkList *L)
{
if(L->next==NULL)
{
printf("List is empty!\n");
return 0;
}
LinkList *p=L->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
return 0;
}
//查找(return pos)
int PosLocItem(LinkList *L,int item)
{
int pos=1;
LinkList *p=L->next;
if(L->next==NULL)
{
printf("List is empty!\n");
return 0;
}
while(p)
{
if(p->data!=item)
{
p=p->next;
pos++;
}
else
{
break;
}
}
if(p==NULL)
{
printf("The node is not exist!\n");
return 0;
}
return pos;
}
//查找(return value)
int ValLocItem(LinkList *L,int pos)
{
int i=1;
LinkList *p=L->next;
if(L->next==NULL)
{
printf("The List is empty!\n");
return 0;
}
while(i!=pos)
{
p=p->next;
i++;
}
return p->data;
}
//排序
int Sort(LinkList *L)
{
LinkList *p,*q,*t,*r,*k;
p=L->next;
k=L;
k->next=NULL;
while(p!=NULL)
{
t=k;
q=t->next;
while(q!=NULL&&q->data <= p->data)
{
t=q;
q=q->next;
}
r=p->next;
t->next=p;
p->next=q;
p=r;
}
}
int main()
{
LinkList *L;
L=InitList(L);
}
线性表(链表)
最新推荐文章于 2023-04-16 22:02:19 发布