文档介绍:1链表基本操作
typedef struct myLink
{
int data;
struct myLink *next;
}Link;
//创建链表包含头节点
int creatLink(Link **phead)
{
int res = 0;
int num;
Link *ptm = (Link *)malloc(sizeof(Link));
ptm->data = 0;
*phead = ptm;
printf("请输入数据,以0结束!!!\n");
scanf("%d", &num);
while (num != 0)
{
Link *pNew = (Link *)malloc(sizeof(Link));
if (pNew == NULL)
{
res = -1;
printf("pNew==NULL 创建链表失败 error:%d\n",res);
}
pNew->data = num;
ptm->next = pNew;
ptm = pNew;
printf("请输入数据,以0结束!!!\n");
scanf("%d", &num);
}
ptm->next = NULL;
return res;
}
//打印链表
int printLink(Link *pHead)
{
int res = 0;
Link *p = pHead->next;
if (p == NULL)
{
res = -1;
printf("printfLink() err:%d 链表为空打印失败\n",res);
return res;
}
while (p != NULL)
{
printf("data=%d\n",p->data);
p = p->next;
}
return res;
}
//插入链表在data=x的前面插入data=y;
int insertLink(Link *pHead, int x, int y)
{
int res = 0;
if (pHead == NULL)
{
res = -1;
printf("pHead==NULL insertLink() err:%d\n",res);
return res;
}
Link *pNew = (Link *)malloc(sizeof(Link));
pNew->data = y;
Link *pPre = pHead;
Link *pCurr = pHead->next;
int flag = 0;
while (pCurr != NULL)
{
if (pCurr->data == x)
{
flag = 1;
break;
}
pPre = pPre->next;
pCurr = pCurr->next;
}
if (flag == 0)
{
res = -2;
printf("原链表中没有%d\n",x);
return res;
}
pNew->next = pCurr;
pPre->next = pNew;
return res;
}
//删除链表中节点删除data=x的节点
int deleLink(Link *pHead, int x)
{
int res = 0;
if (pHead == NULL)
{
res = -1;
printf("pHead==NULL deleLink() error:%d\n",res);
return res;
}
Link *pPre = pHead;
Link *pCurr = pHead->next;
int flag = 0;
while (pCurr != NULL)
{
if (pCurr->data == x)
{
flag = 1;
break;
}
pPre = pPre->next;
pCurr = pCurr->next;
}
if (flag == 0)
{
res = -2;
printf("原链表中没有%d\n", x);
return res;
}
pPre->next = pCurr->next;
return res;
}
//反转链表
int revertLink(Link *pHead)
{
int res = 0;
if (pHea