C++实现删除单链表节点的功能(源代码+截图)
来源:互联网 发布:mac 加速器 编辑:程序博客网 时间:2024/05/01 11:21
1. 删除链表中的一个节点。其主要思想就是改变链表的指针域,以此到达删除节点的目的。如下图:
我们可以通过修改节点的指针域来删除12号节点。15->next=12->next
2. 删除链表节点的算法如下:
LNode *Delete_L(LNode *L, ElemType e){ Lnode *q=L; *p=L; if(L= =NULL) { cout<<"空链表\n"; return L; } if(L->data= =key) { q=L; L=L->next; delete q; //删除节点 return L; } while(p->data!=key && p->next!=NULL) { q=p; p=p->next; } if(p->data= =key) { q->next=p->next; delete p;//删除节点 } else { cout<<"没有指定的节点"; } return L;}
3. 完整的程序代码如下:
#include<iostream> #include<string>#include<malloc.h> using namespace std; struct Stu { int age; string name; struct Stu* next; }; struct Stu* CreateList() //创建链表,年龄输入0,结束输入 { Stu *head; head=(struct Stu*)malloc(sizeof(Stu)); Stu *p1,*p2; if((p1=p2=(struct Stu*)malloc(sizeof(Stu)))==0) { cout<<"内存分配失败!"<<endl; }; cout<<"提示:输入【0】结束输入!"<<endl; cout<<"请输入年龄:"; cin>>p1->age; if(p1->age==0) { return 0; } cout<<"请输入姓名:"; cin>>p1->name; int i=0; while(1) { i++; if(i==1) { head=p1; } p2->next=p1; p2=p1; if((p1=(struct Stu*)malloc(sizeof(Stu)))==0) { cout<<"内存分配失败!"<<endl; } cout<<"请输入年龄:"; cin>>p1->age; if(p1->age==0) { p2->next=NULL; return head; } cout<<"请输入姓名:"; cin>>p1->name; } return head; } struct Stu* DeleteList(struct Stu* h, int a)//根据指定年龄,删除某个节点 {struct Stu* p1=h;struct Stu* p2=NULL;if(p1==NULL){cout<<"此链表为空"<<endl;return h;}while(p1->next!=NULL && p1->age!=a){p2=p1;p1=p1->next;}if(p1->age=a){if(h==p1){h=p1->next;}else{p2->next=p1->next;free(p1);}}else{cout<<"要删除的节点不存储在!"<<endl;}return h;} void ShowList(struct Stu* h) //打印链表 { struct Stu* hTemp=h; while(hTemp!=NULL) { cout<<hTemp->age<<" "<<hTemp->name<<" "<<endl; hTemp=hTemp->next; }cout<<endl; } int main() //主函数,调用各函数 { int delAge; Stu *head=(struct Stu*)malloc(sizeof(Stu)); head=CreateList(); cout<<endl<<"你输入的内容为:"<<endl; ShowList(head); cout<<"请输入要删除节点的值: ";cin>>delAge; head=DeleteList(head,delAge);cout<<endl<<"删除指定节点后:"<<endl; ShowList(head); return 0; }
注:本程序在devc++中通过测试
参考博客:C++实现单链表的创建和打印
4 0
- C++实现删除单链表节点的功能(源代码+截图)
- C语言实现单链表节点的删除(带头结点)
- 截图功能的实现
- 实现类似ping功能的C源代码
- C语言实现单链表节点的删除(不带头结点)
- 截图功能的简单实现
- 截图保存功能的实现
- 屏幕截图的实现和源代码
- 屏幕截图的实现和源代码
- 单链表实现删除最小节点的算法
- 编程实现单链表的删除节点
- 编程实现一个单链表节点的删除
- C语言实现链表节点的插入和删除
- C语言实现链表节点的插入和删除
- C++|单链表的实现源代码
- python实现的黑客字幕雨(附截图功能)
- 截图功能实现(三)截图放大器实现
- MATLAB实现截图功能,返回屏幕截图的RGB数组
- 已知一支白菜连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该白菜第i天的
- 指针作为参数
- 整理下最近在做的android5.0的代码,留用
- [LeetCode] 92. Reverse Linked List II
- java之FileReader与FileWriter
- C++实现删除单链表节点的功能(源代码+截图)
- LeetCode——045
- 利用最小堆管理事件超时
- triple
- 第五周项目二(1)-游戏中的角色类
- 四个100以内的随机数排大小
- iOS开发-FMDB
- Android Studio 2.0新特性之Instant Run
- JQuery绑定事件与移除事件、动画