‘壹’ c语言节点
q=p->next;
p->next=q->next;
free(q);
这个答案好像书上都有的吧。
‘贰’ c语言中节点是什么意思,最好解释的详细易懂一点
一个节点,本身它就是一个结构体struct,里面有个存放数据的地方data,指向下一个节点的指针*next,假若是头节点的话还要有个头指针。
‘叁’ c语言什么叫节点
你说的节点应该是数据结构链表的组成单元吧。在链表中每个组成单元成为一个节点。这个节点通常是一个结构体。结构体是c语言的一种数据类型。
‘肆’ c语言链表怎么通过节点数据查找节点进行插入或更改;
说一下一个大概的思路,首先定义两个指针,一个指针用来向前移动(叫当前指针),另一个指针紧跟其后(叫前驱指针),这个主要用于链表的增删,判断是否要删除当前指针指向的节点,或者增加节点。如果需要删除当前节点,则前驱指针的下一个节点指向当前指针的下一个节点,释放当前指针指向的节点,然后当前指针指向前驱指针的下一个节点,增加也是一样的,一直这样遍历整个链表。至于修改节点数据,那么需要一个当前指针就够了,找到要修改的节点,修改就好了。
闲着没事干,刚写了代码,给你参考一下:
//删除节点
voiddelete_node_credit(floatconstcredit){
stu*pre_node=head;
stu*cur_node=head->next;
while(cur_node){
if(cur_node->credit==credit){
pre_node->next=cur_node->next;
free(cur_node);
cur_node=pre_node->next;
}else{
pre_node=cur_node;
cur_node=cur_node->next;
}
}
//判断是否删除头节点
if(head->credit==credit){
cur_node=head->next;
free(head);
head=cur_node;
}
}
//新增节点
voidinsert_node_credit(stu*new_node,floatconstcredit){
stu*pre_node=head;
stu*cur_node=head->next;
if(pre_node->credit>credit){//新增节点是头节点
head=new_node;
new_node->next=pre_node;
return;
}
while(cur_node){
if(cur_node->credit<credit&&pre_node->credit>credit){
pre_node->next=new_node;//插入新的节点
new_node->next=cur_node;
return;
}
pre_node=cur_node;
cur_node=cur_node->next;
}
//新增节点插入链表尾部
if(pre_node->credit<credit){
pre_node->next=new_node;
return;
}
}
下面是运行结果
如果你看理解了这个思路,那么链表的增删查改操作就没有问题了。有用的话点一下采纳,谢谢!!!
‘伍’ c语言节点和结点是什么意思求具体解释
结点,是指终结的点,最后的点。而节点则是一条线段(路径)上任意选的一个点都可以称为节点.
‘陆’ 什么是c语言里面的结点啊
节点就是一个位置,其中存放着相应的数据。
如果说宿舍楼是一个链表,那么每间宿舍就是一个节点,里面的学生就是相应的数据
‘柒’ C语言,计算链表中元素节点个个数
楼主你好~
很简单哦
int
count
=
0;
while(p
!=
NULL)
{
p
=
p->next;
count++;
}
这个count就是最终的结点个数(包括头结点)~
请追问~
‘捌’ 在c语言中数据的节点是由什么和什么组成的
地址和内容
‘玖’ c语言中怎么插入和删除节点
/*
链表节点的插入与删除
编译环境:VC++6.0
编译系统:windowsXPSP3
*/
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
//定义链表中的节点
typedefstructnode
{
intmember;//节点中的成员
structnode*pNext;//指向下一个节点的指针
}Node,*pNode;
//函数声明
pNodeCreateList();//创建链表函数
voidTraverseList(pNode);//遍历链表函数
boolInsert_Node(pNode,int,int);//链表节点插入函数,第一个参数是头节点,第二个参数是要在第几个节点前插入,第三个参数是要插入的数据
intDel_Node(pNode,int);//删除链表节点,第一个参数是头节点,第二个参数是删除第几个节点,第三个作为
intmain()
{
pNodepHead=NULL;//定义初始化头节点,等价于structNode*pHead==NULL
intdata;//作为Insert_Node函数的第三个参数
intnum;//作为Inset_Node函数第二个参数
intchoose;
intreturn_val;
pHead=CreateList();//创建一个非循环单链表,并将该链表的头结点的地址付给pHead
printf("你输入的数据是:");
TraverseList(pHead);//调用遍历链表函数
printf("是否还要进行如下操作:
");
printf("1.插入数据2.删除数据
");
printf("请输入:");
scanf("%d",&choose);
switch(choose)
{
case1:
{
printf("请输入要在第几个节点前插入数据:");
scanf("%d",&num);
printf("请输入要插入的数据:");
scanf("%d",&data);
if(Insert_Node(pHead,num,data)==true)
{
printf("插入成功
插入后的数据是:
");
TraverseList(pHead);
}
else
{
printf("插入失败
");
}
printf("操作完成后的数据是:");
TraverseList(pHead);
break;
}
case2:
{
printf("请输入要删除第几个节点的数据:");
scanf("%d",&num);
return_val=Del_Node(pHead,num);
if(return_val==0)
{
printf("删除失败。
");
}
else
{
printf("删除成功。删除的元素是:%d
",return_val);
}
printf("操作完成后的数据是:");
TraverseList(pHead);
}
}
return0;
}
//创建链表函数
pNodeCreateList()
{
inti;//用于下面循环
intlen;//用来存放有效节点的字数
intval;//用于临时存放用户输入的数据
pNodepHead=(pNode)malloc(sizeof(Node));//分配一个不存放有效数据的头结点
pNodepTail=pHead;//链表的最后一个节点
pTail->pNext=NULL;//最后一个节点的指针置为空
printf("请输入节点个数:");
scanf("%d",&len);
for(i=0;i<len;i++)
{
printf("第%d个节点的数值:",i+1);
scanf("%d",&val);
pNodepNew=(pNode)malloc(sizeof(Node));//为节点分配空间
pNew->member=val;//将用户输入的数据赋给节点的成员
pTail->pNext=pNew;//将最后一个节点的指针指向下一个新的节点
pNew->pNext=NULL;//将新节点中的指针置为空
pTail=pNew;//将新节点赋给最后的一个节点
}
returnpHead;//返回头节点
}
//遍历链表函数
voidTraverseList(pNodepHead)
{
pNodep=pHead->pNext;//将头节点的指针给予临时节点p
while(NULL!=p)//节点p不为空,循环
{
printf("%d",p->member);
p=p->pNext;
}
printf("
");
return;
}
//链表节点插入函数
//第一个参数是头节点,第二个参数是要在第几个节点前插入,第三个参数是要插入的数据
boolInsert_Node(pNodepHead,intfront,intdata)
{
inti=0;
pNode_node=pHead;
pNodepSwap;//用于交换
if((front<1)&&(NULL!=_node))//判断用户输入的数据是否大于等于1,及_node是否为空
{
returnfalse;
}
while(i<front-1)//通过循环使指针指向要插入哪个节点前的节点。说的自己都不懂了,还是看下面的图吧。
{
_node=_node->pNext;
++i;
}
pNodepNew=(pNode)malloc(sizeof(Node));
pNew->member=data;//把输入的数据赋给要插入的节点
pSwap=_node->pNext;//把下一个节点的地址,给用于交换的pSwap
_node->pNext=pNew;//把要插入的节点的地址,给上个节点的指针域
pNew->pNext=pSwap;//把插入节点的下一个节点的地址,给插入节点的指针域
returntrue;
}
//删除链表节点函数
//第一个参数是头节点,第二个参数是要删除第几个节点·······和上面的插入函数是不是很像
intDel_Node(pNodepHead,intback)
{
inti=0;
intdata;
pNode_node=pHead;
pNodepSwap;
if((back<1)&&(NULL==_node->pNext))
{
printf("删除失败!
");
return0;
}
while(i<back-1)
{
_node=_node->pNext;
++i;
}
pSwap=_node->pNext;
data=pSwap->member;
_node->pNext=_node->pNext->pNext;
free(pSwap);
returndata;
}
‘拾’ 请问下C语言的链表的结点是什么结点是指针变量吗还是就是一个值
头指针,是指向链表头的指针。
头结点,是链表头指针指向的节点,通常是后添加的不包含任何数据信息的节点,而第一个节点才是真正的链表中的数据节点。
表头,就是头结点。
数据结构的教材中会有更好的讲解,望采纳,谢谢。