单向链表结点的逐个删除-C语言教程

来源:本站
导读:目前正在解读《单向链表结点的逐个删除-C语言教程》的相关信息,《单向链表结点的逐个删除-C语言教程》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《单向链表结点的逐个删除-C语言教程》的详细说明。
简介: 每敲一次代码都会有新的收获,基本功不扎实啥也干不了。单向链表的插入,删除,创建,遍历是数据结构的基本操作。里边的算法值得学习。下面我们就来学习一下单向链表结点的逐个删除的方法。

源码:

/*

先创建一个单向链表,然后从头结点开始逐个删除。

*/

#include"stdio.h"

#include"stdlib.h"

//声明一个结点,实际上就是定义一个数据结构

struct node{

int num;

node *next;

};

//创建链表

node *creatlist()

{

int i=0;//统计创建结点个数

node *head,*p2,*p1;//p2用来传递结点指针

head=p2=p1=new node;

printf("请输入头结点数据域数据:nr");

scanf("%d",&p1->num);

p1->next=NULL;

while(p1->num!=0)

{

p1=new node;

scanf("%d",&p1->num);

p2->next=p1;//头结点指针指向新创建的结点

p2=p1;

i++;

}

p2->next=NULL;//链表尾结点

printf("创建的结点数是:%dn",i);

return head;

}

void display(node *head)

{

node *p=head;

while(p->next!=NULL)

{

printf("%dt",p->num);

p=p->next;

}

printf("n");

}

//从头结点开始删除整个链表

void remove(node *head)

{

int i=0;//统计删除结点个数

//通过这两个指针的移动实现整个链表结点逐个删除,

node *p,*p1;//也就是说本函数只需轮流使用这两个指针移动就能实现遍历链表

p=head;//存储头指针,

p1=p->next; //存储头结点指针域

while(p->next!=NULL)//通过循环逐个删除结点

{

//刚开始p指向head,即p存储了头结点head本身的指针,即p就是头结点指针

delete p;//通过这一步释放p所指向的内容,即删除头结点内容

i++;

p=p1;//p指向p1即下一个结点,这时p1成为新链表的头指针,因为之前的头结点已经删除

//p1原来指向头结点的下一个结点

p1=p1->next;//通过此步,p1指针重新指向,指向下一个结点实现指针移动

}

delete p;//将最后一个结点删除

printf("删除结点个数: %dn",i);

}

void main()

{

node*head=creatlist();

display(head);

remove(head);

}

--------------GKXW

提醒:《单向链表结点的逐个删除-C语言教程》最后刷新时间 2024-03-14 01:01:29,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《单向链表结点的逐个删除-C语言教程》该内容的真实性请自行鉴别。