#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct node
{
ElemType elem;
struct node * next;
} LinkList;
LinkList * initLink()
{
LinkList * p;
LinkList * temp = (LinkList *)malloc(sizeof(LinkList));
p = temp;
temp->next = NULL;
for(int i=0; i<6; ++i)
{
LinkList * pNew = (LinkList *)malloc(sizeof(LinkList));
pNew->elem = i;
temp->next = pNew;
pNew->next = NULL;
temp = pNew;
}
return p;
}
//插入元素
LinkList * insertElem(LinkList * list, int add, ElemType elem)
{
LinkList * temp = list;
for(int i=1; i<add; ++i)
{
if(temp->next == NULL)
{
printf("插入位置不存在!\n");
return list;
}
temp = temp->next;
}
LinkList * pNew = (LinkList *)malloc(sizeof(LinkList));
pNew->elem = elem;
pNew->next = temp->next;
temp->next = pNew;
return list;
}
//查找元素
int selectElem(LinkList * list, ElemType elem)
{
LinkList * temp = list;
int add = 0;
temp = temp->next;
while(temp)
{
if(temp->elem == elem)
return ++add;
++add;
temp = temp->next;
}
return 0;
}
//删除元素
LinkList * deleteElem(LinkList * list, ElemType elem)
{
LinkList * temp = list;
int add = selectElem(list, elem);
if(add<1)
printf("删除元素不存在!\n");
return list;
for(int i=0; i<add-1; ++i)
temp = temp->next;
LinkList * p;
p = temp->next;
temp->next = temp->next->next;
free(p);
return list;
}
//修改元素
LinkList * modifyElem(LinkList * list, ElemType elem1, ElemType elem2)
{
LinkList * temp = list;
int add = selectElem(list, elem1);
for(int i=0; i<add; ++i)
{
temp = temp->next;
}
temp->elem = elem2;
return list;
}
void traverse(LinkList * p)
{
LinkList * temp;
temp = p->next;
while(temp)
{
printf("%-4d",temp->elem);
temp = temp->next;
}
printf("\n");
}
int main(void)
{
LinkList * list;
list = initLink();
traverse(list);
//list = insertElem(list,-1, 43) ;
//printf("%d\n",selectElem(list,7));
//list = deleteElem(list,7);
list = modifyElem(list,6, 23);
traverse(list);
return 0;
}