当要删除姓名为name的节点时,有下列程序;
void Delete(NODE**head,char*name)
{
NODE *p,*a;
a=p=*head;
if(NULL==p)return;
if(0==strcmp((p->data).name,name))
{
*head=p->next; delete p;
} else
{
//查找姓名为name的节点a,如果while条件不满足,要么是到链表末尾节点,
//要么是找到姓名为name的节点
while((p->next!=NULL)&&(strcmp((p->data).name,name)))
{
a=p; p=p->next;
}
if(0==strcmp((p->data).name,name))
{
a->next!=p->next; delete p;
}
}
}
我看不懂, 求详细分析此代码。 十分感谢
c++ 链表 删除各种情况节点问题。。。求教。。在线等。。。
一、结尾节点无法删除的问题,你可以想象一个只有三个节点的链表,结尾节点的ID=findid,开始时,p指向第二个节点,然后执行到第一个if时,由于p->next->ID==findid,于是执行第二个if语句,但是此时p->next->next是等于NULL的,所以删除节点的代码没被执行。二、当只有一个结点时,因为一开始定义...
C++中销毁单链表的问题
{ LNode * p = L; LNode * t; while (p) { t = p->next; delete p; \/\/这里。删除当前p节点,下一步赋值为t(即p->next) p = t; }}
用C++方法实现顺序表线性表的建立、插入、删除和逆转操作。并用主函数...
NodeType *p=Head->next;\/\/使指针p指向链表的第一个节点 while(p!=NULL){ Head->next=p->next;\/\/使头指针指向p的下一个节点 delete p;p=Head->next;\/\/使p节点指向头指针向的那个节点 } delete Head;\/\/最后将头节点也删除 cout<<"已经删除链表!"<<endl;} void LinkList::display(){ ...
求大神教我c++ 谢啦 是关于链表删除的
include<iostream> using namespace std;struct Node{ int data;Node *next;};Node * ins(Node *head, int x){ Node *p,*q,*t;t=new Node;t->data=x;t->next=0;if(head==0){ head=t;return head;} q=head;p=head->next;while(p!=0){ q=p;p=p->next;} q->next=t;ret...
用C++设计一个整型链表类list,能够实现链表结点的插入(insert)、删除...
void insert(int i,int x); void DELETE(int i); void display(); private: node *first,*last; }; void list::push_back(int val) { node *p=new node(val); if(NULL==first) { first=p; last=p; } else { last->R=p; p->L=last; last=last->R; } } void list:...
帮忙用C++编一下:以二叉链表为存储结构,在二叉树中删除以值x为根结点...
} } int main(){ char str[100],x;BTnode *b;printf("请输入二叉树的字符串:");gets(str);printf("\\n要删除的子树的根节点为:");scanf("%c",&x);create(b,str);printf("\\n删除根节点为%c的子树后的二叉树字符串为:",x);Delete(b,x);printf("\\n\\n");system("pause");...
链表中的怎么使用指针进行链表的建立、插入、删除等处理操作
删除操作需要查找是否存在要删除的数据,存在则删除,不存在不采取动作 函数原型:void DeleteNode ( Node<DataType> *head, DataType data );我们设置ptr作为遍历链表的游标,设置ptrNext指针作为ptr的下一个节点,将它里面的info与data对比;设置两个指针是为了方便我们删除节点。函数定义如下 { Node<...
...带头结点的循环链表为list,设计一个算法,删除链表中数据域值为_百度...
已知一个带头节点的循环列表为list设计一个算法,删除链表中数据域值为item的所有结点C++
【数据结构】C\/C++ 单链表的 创建、初始化、增、删、改、查、遍历等基 ...
C\/C++单链表的基本操作包括创建、初始化、增删改查和遍历等。首先,定义链表结构,包括数据域和指向下一个节点的指针。头插法建立链表函数Creat_LinkList()的工作流程是:动态分配链表节点,输入用户数据,通过循环将节点依次插入到链表头部,直到用户输入0为止。尾插法的创建函数Creat_LinkList_R()则是...
c++释放链表节点是什么意思
因为链表是动态创建,分散在内存的各个地方,通过链表指针访问的.如果不要它了,就要把它的资源释放,而不是简单的断开指针链接(那样会内存泄露).而且如果链表节点上有指向资源的指针,还要先把它释放再释放链表节点本身.释放链表节点是写一个好程序的基础.