您的位置:首页 > 理论基础 > 数据结构算法

数据结构 单链表删除结点 例子

2017-09-11 22:30 381 查看
单链表的删除是将下一个节点移到待删除的节点上,只需移动这两个位置,其他的位置不用变化,这也是链表的优点。而数组的删除则是将待删除数值之后的所有数据移动一遍。

下面的程序是按照位置对链表的数值进行删除。

#include <stdio.h>
#include <malloc.h>
#include <time.h>

typedef struct list
{
int vaule; //数据域
struct list *PNext; //指针域
}TNODE, *TPNODE;

TPNODE Creat_list();
void Trave_list(TPNODE _PHead);
int Delete_List(TPNODE _pHead, int _pos, int *_iVal);

int main()
{
int iVal = 0;
int pos = 0;
TPNODE PHead;
srand((int)time(NULL));

PHead = Creat_list(); //创建链表
Trave_list(PHead); //遍历链表

printf("please input delete pos\n"); //想删除第几个数值
scanf("%d", &pos);

if(1 == Delete_List(PHead, pos, &iVal))//删除链表
{
printf("Delete fail\n");
}
else
{
Trave_list(PHead); //遍历链表
printf("%d had Delete\n", iVal); //输出刚才被删除的数值
}

return 0;
}

//创建链表
TPNODE Creat_list()
{
int i = 0;
int len = 0;
int iVaule = 0;

TPNODE pHead;
pHead = (TPNODE)malloc(sizeof(TNODE)); //创建一个头结点
if(NULL == pHead) //创建失败
{
printf("create list fail\n");
}

TPNODE PTail = pHead;
pHead->PNext = NULL;

printf("please input len of list\n");
scanf("%d", &len); //输入想要的个数
for(i = 0; i < len; i++)
{
iVaule = rand()%100+1;

TPNODE pNew = (TPNODE)malloc(sizeof(TNODE)); //分配内存

pNew->vaule = iVaule; //将数据域赋予数据
PTail->PNext = pNew;
pNew->PNext = NULL;
PTail = pNew;
}

return pHead;
}

//链表输出
void Trave_list(TPNODE _PHead)
{
int i = 0;
TPNODE P = _PHead->PNext;

while(NULL != P)
{
i = 1;
printf("%d ", P->vaule);
P = P->PNext;
}
if(1 == i)
{
printf("\n");
}
}

//链表删除
int Delete_List(TPNODE _pHead, int _pos, int *_iVal)
{
int i = 0;
TPNODE p = _pHead;
while(NULL != p->PNext && i < _pos-1)
{
p = p->PNext;
//printf("val: %d\n", p->vaule);
i++;
}

if(i > _pos -1 || NULL == p->PNext)
{
return 1;
}

TPNODE q = p->PNext;
*_iVal = p->PNext->vaule;
p->PNext = p->PNext->PNext; //将待删除节点后面的一个节点放到待删除节点的位置

free(q);
q = NULL;
return 0;
}此程序的运行结果:



创建链表:http://blog.csdn.net/z_dream_st/article/details/77142223

链表的插入:http://blog.csdn.net/z_dream_st/article/details/77726255
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐