链表【1】

目录

结构:数据域+指针域

malloc(c)、new(c++)申请空间

malloc:

new: 

初步实现:使用pre

 


结构:数据域+指针域

数据域是当前节点的值

指针域是下一个节点的指针

struct node
{int data;//所以typename是个保留字
node* next;//指针类型是node 
}

 

malloc(c)、new(c++)申请空间

看了半天。需要申请空间的是node,申请空间返回的是指针node*,指向申请的空间。

链表的每一个节点都需要申请一下次。

struct里的next与data不需要你申请,包含在node套餐里了。

malloc:

new: 

node*=new node;、、简洁!

二者返回的都是对应类型的指针,这点没有区别。

初步实现(使用pre指针)

 我采用的是带头节点的写法,如果这样print出来会在开头多一个脏数据,因为头结点未定义。

在一开始让L=L-》next就好啦

 创建链表、赋值、遍历打印

#include<stdio.h>
const int n=5;//如果不写,跟我说n没有declare 
using namespace std;
int ar[n]={2,1,3,45,1};//如果不写在这,跟我说ar没declare 
//定义节点 
struct node
{int data;//所以typename是个保留字
node* next;//指针类型是node 
};
//创建链表
node* create()//参数:书上是传入array以赋值,所以如果是scanf,就没有参数了 
{node *p,*pre,*head;
//为头结点申请空间 
head=new node; 
head->next=NULL;//头结点一开始没有下一个,所以写null 
//直接赋值,用-> 
pre=head;
for(int i=0;i<n;i++)
{
	//当前节点是p,每一次都新申请
	p=new node;
	p->data=ar[i];
	p->next=NULL;
	pre->next=p;
	pre=p;
	 
	
}


return head;
	
 } 

int main()
{
node* L=create()->next ;
while(L!=NULL)
{printf("%d\n",L->data );
L=L->next;
}
}

 问题:书上米有free???关于释放空间,明天解答

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值