#include
#include
typedef int Elemtype;
typedef struct LNode
{
int data;
struct LNode *next;
}LinkNode;
//尾插法建立单链表
void CreateList(LinkNode *&L,ElemType a[],int n)
{
LinkNode *s,r;
L=(LinkNode)malloc(sizeof(LinkNode));
r=L;
for(int i=0;i
{
s=(LinkNode*)malloc(sizeof(LinkNode));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
//输出单链表
void DispList(LinkNode *L)
{
LinkNode *p=L->next;
while(p!=NULL)
{
printf("%d",p->data);
p=p->next;
}
printf("\n");
}
//求单链表长度
int ListLength(LinkNode *L)
{
int n=0;
LinkNode *p=L;
while(p->next!=NULL)
{
n++;
p=p->next;
}
return n;
}
//单链表的插入操作
bool ListInsert(LinkNode *&L,int i,int e)
{
int j=0;
LinkNode *p=L,s;
if(i<0)
return false;
while(j
{
j++;
p=p->next;
}
if(p==NULL)
return false;
else
{
s=(LinkNode
s->data=e;
s->next=p->next;
return true;
}
}
//按值查找
int Locate(LinkNode *L,int e)
{
int i=1;
LinkNode *p=L->next;
while(p!=NULL&&p->data!=e)
{
p->next;
i++;
}
if(p==NULL)
return 0;
else
return i;
}
//删除操作
bool ListDelete(LinkNode *&L,int i, int &e)
{
int j=0;
LinkNode *p=L,*r;
if(i<=0)
return false;
while(j
{
j++;
p=p->next;
}
if(p==NULL)
return false;
else
{
r=p->next;
if(r=NULL)
return false;
e=r->data;
p->next=r->next;
free(r);
return true;
}
}
int main(void)
{
ElemType e;
ElemType i
ElemType a[6];
LinkNode L;
L =(LinkNode)malloc(sizeof(LinkNode));
L->next=NULL;
printf("请输入数字:");
for (i=0;i<6;i++)
{
scanf("%d",&a[i]);
}
CreateList(L,a,6);
printf("链表长:%d\n",ListLength(L));
printf("单链表的元素为:");
DispList(L);
printf("请输入需要插入的元素的位置和需要的值:");
scanf("%d%d",&i,&e);
ListInsert(L,i,e);
printf("链表长:%d\n",ListLength(L));
printf("单链表的元素为:");
DispList(L)
printf("请输入需要查找的值:");
scanf("%d",&e);
printf("%d所在的位置是:%d\n",e,Locate(L,e));
printf("请输入需要删除元素的位置:");
scanf("%d",&i);
ListDelete(L,i,e);
printf("单链表的元素为:");
DispList(L);
printf("链表长:%d\n",ListLength(L));
return 0;
}
注意 你的大小写不一样: