您的位置:首页 > 编程语言 > C语言/C++

c语言-单向链表

2016-09-02 16:45 381 查看
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

typedef struct Node
{
int data;
struct Node *pNext;
}sList;

//创建链表
int createList(sList *list)
{
sList  *pM, *pCur;
if (list == NULL)
{
printf("error parameter list");
return -1;
}
pCur = list;
printf("\nplease enter you data '-1' is end!\n");
fscanf(stdin, "%d", &(pCur->data));
while (pCur->data != -1)
{
pM = (sList*)malloc(sizeof(sList));
if (pM == NULL)
{
printf("error parameter pM");
return -2;
}
pCur->pNext = pM;
pCur = pM;
printf("\nplease enter you data '-1' is end!\n");
fscanf(stdin, "%d", &(pCur->data));
}
pCur->pNext = NULL;

return 0;
}
//遍历链表
int showList(sList *list)
{
if (list == NULL)
{
printf("error parameter list");
return -1;
}
sList *tmp = list;
while (tmp != NULL)
{
printf("lsit:%d\n", tmp->data);
tmp = tmp->pNext;
}
return 0;
}
//插入结点
int insertList(sList *list, int seat, int data)
{
if (list == NULL)
{
printf("error parameter list");
return -1;
}
sList *pCur = list;
while (pCur && --seat)
{
pCur = pCur->pNext;
}
sList *pM = (sList*)malloc(sizeof(sList));
if (pM == NULL)
{
printf("error parameter pM");
return -2;
}
pM->data = data;
pM->pNext = pCur->pNext;
pCur->pNext = pM;
return 0;
}
//删除节点
int deleteNode(sList *list, int seat)
{
sList *pCur = list;
sList *pDel;
while (pCur&&--seat)
{
pCur = pCur->pNext;
}
pDel = pCur->pNext;
pCur->pNext = pDel->pNext;
free(pDel);
return 0;
}
//销毁链表
int deleteList(sList *list)
{
return 0;
}
//逆置链表(首节点不逆)
int inverseList(sList *list)
{
if (list == NULL)
{
printf("error parameter list");
return -1;
}
sList *pHead=NULL;
sList *pPre=NULL;
sList *pCur=NULL;
sList *pNext=NULL;
pHead = list;
if (pHead->pNext == NULL)
{
return 0;
}
if (pHead->pNext->pNext == NULL)
{
return 0;
}
pPre = pHead->pNext;
pCur = pPre->pNext;
while (pCur)
{
pNext = pCur->pNext;
p
c7fe
Cur->pNext = pPre;
pPre = pCur;
pCur = pNext;
}
pHead->pNext->pNext = NULL;
pHead->pNext = pPre;
return 0;
}

int mainzzweq()
{
int ret = 0;
sList *mylist = (sList*)malloc(sizeof(sList));
ret = createList(mylist);
if (ret != 0)
{
printf("func createList() failure");
return -1;
}
ret = showList(mylist);
if (ret != 0)
{
printf("func showList() failure");
return -1;
}
ret = insertList(mylist, 2, 555);
if (ret != 0)
{
printf("func showList() failure");
return -1;
}
ret = showList(mylist);
if (ret != 0)
{
printf("func showList() failure");
return -1;
}
ret = deleteNode(mylist,2);
ret = showList(mylist);
ret = inverseList(mylist);
ret = showList(mylist);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言