数据结构——p = new Lnode和Lnode *p有什么区别

本文详细介绍了C++中new运算符与delete运算符的使用,强调了new分配的内存需要使用delete释放,而局部变量在作用域结束时自动删除。讨论了智能指针在内存管理中的角色,以及如何避免内存泄漏问题。重点阐述了new和delete必须配对出现的原则,确保内存的正确管理。

两者都是node类型的指针,Lnode *p程序结束后会自动删除,后者new node不会自动删除,会用到delete函数删除。同时new 和 delete 必须成对出现,Lnode *p只是建立一个p指针的临时变量。而前者是为P分配一个Node类型所占的空间,P应是一个指针,指向所分配的内存的首地址。

#include <stdio.h> #include <stdlib.h> #define ERROR 0 #define OK 1 //定义数据元素的类型 typedef int ElemType; //定义单链表的结点 typedef struct LNode{ ElemType data; //数据域 struct LNode *next; //指针域 }LNode,*Linklist; //以下单链表默认都是带头结点的 /*1.初始化操作——创建一个空链表*/ Linklist InitLinklist(){ LNode *L = (LNode *)malloc(sizeof(LNode)); if(!L) exit(ERROR); L->next = NULL; return L; } /*2._________________________*/ void ListInsertF(Linklist L,ElemType e){ LNode *newnode = (LNode *)malloc(sizeof(LNode)); if(!newnode) exit(ERROR); newnode->data = e; newnode->next = L->next; L->next = newnode; } /*3.__________________________ */ void ListInsertL(Linklist L,ElemType e){ LNode *p = L->next; while(p->next!=NULL) p = p->next; LNode *newnode = (LNode *)malloc(sizeof(LNode)); if(!newnode) exit(ERROR); newnode->data = e; p->next = newnode; newnode->next = NULL; } /*4.输出打印单链表L中的元素*/ void ListPrint(Linklist L){ //补充代码 } /*5.求单链表L的长度——统计元素的个数*/ int ListLength(Linklist L){ //补充代码 } /*6.在带头结点的单链表L中的第i个位置之前插入元素e*/ int ListInsert(Linklist L,int i,ElemType e){ //补充代码 } /*7.在带头结点的单链表L中,删除第i个元素*/ int ListDelete(Linklist L,int i){ //补充代码 } /*8.在带头结点的单链表L中,查找值为x的元素*/ void ListLocate(Linklist L,ElemType x){ //补充代码 } int main(){ //补充测试代码,调用上面的各个函数,执行单链表的基本操作 Linklist mytest; //定义一个单链表mytest printf("初始化单链表mytest\n"); printf("在单链表mytest中插入5个元素\n"); printf("输出第一个元素为:%d\n",mytest->next->data); printf("输出单链表mytest中所有的元素:"); printf("\n尾插法插入一个元素\n"); printf("单链表的表长为:%d\n",ListLength(mytest)); printf("删除单链表mytest中第3个元素\n"); printf("输出单链表mytest中所有的元素:"); printf("\n在单链表mytest中,查找值为5的元素:"); return 0; } 运行结果截图
10-18
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值