您的位置:首页 > 编程语言 > C语言/C++

C++不使用头结点创建单链表,并实现删除某个结点的功能

2019-07-13 11:07 225 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_38220144/article/details/95733510

头部声明如下

[code]#include <iostream>
#include <malloc.h>
using namespace std;
typedef int ElemType;
typedef struct LNode{
ElemType data;//存放数据元素值
struct LNode *next;
}LinkNode;

以下是主函数:

[code]int main(){
ElemType a[5]={1,4,8,3,5};//定义ElemType类型的数组
LinkNode *L;
int x;//要删除的值
Create_LinklistHead(L,a,5);//创建不带头结点的单链表
Display(L);//输出单链表
cout<<endl;
cout<<"输入你想要删除的值:";
cin>>x;
Del_X_3(L,x);//删除单链表的函数
Display(L);
return 0;
}

 删除函数如下:

[code]void Del_X_3(LinkNode *&L,ElemType x){
LinkNode *p;
if(L==NULL) return;
if(L->data==x){
p=L;
L=L->next;
free(p);
Del_X_3(L,x);
}
else
Del_X_3(L->next,x);
}

输出函数如下:

[code]void Display(LinkNode *&L){
LinkNode *p=L;
while(p!=NULL){
cout<<p->data<<" ";
p=p->next;
}
}

头插法创建单链表:

[code]void Create_LinklistHead(LinkNode *&L,ElemType a[],int n)//采用头插法
{
int i;
LinkNode *q;
L=NULL;
for(i=0;i<n;i++)
{
q=(LinkNode *)malloc(sizeof(LinkNode));//生成新节点
q->data=a[i];
q->next=L;                       //将L所指向的地址赋给新生成的节点指针
L=q;                             //头指针指向新生成节点
}
}

 

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐