c++创建单链条(头插,尾插)

//头插法

typedef struct node //声明结构体 名为node

{

int data;//里面存了int类型4个字节

struct node *next; //有2个字节给了指针

}Node;//这里可以重命名结构体名

Node* createLinkByHead()//创建一个单链条

{

Node *head=NULL,*p=NULL;//head为头节点 p为游动的指针

int m;

scanf("%d",&m);//这两步为设置 输入数据的 结束标志

while (m>0)

{

p=(Node *)malloc(sizeof(Node)) //向系统申请一个与Node字节相同的空间给p

p->data=m;// ->为指向 p->data 可以表示data里的数据 p首先指向data

p->next=NULL;// 然后指向了next指针 并且这个指针不指向任何数据

if(head == NULL) head=p;//这里就和最后一个数据有关了 最后一个数据的next为NULL

else

{

p->next=head;

head=p;

}

scanf("%d",&m);

}

return head;//因为是单链条 所以知道头节点指的数据就可以全部都找出来

}

————————————————————————————————————————

//尾插法

typedef struct Node//定义类型

{

int data;//Node类型中含有两个变量 一个是数据域 一个是指针域

struct Node *next;

}Node;//重命名

Node *createlist()

{

Node *head=NULL,*tail=NULL;//定义头指针和尾指针 他们都有一个数据域和一个指针域

int n;

printf("输入SIGN:");//给输入元素的程序指定一个标志 当n=0时结束输入元素

scanf("%d",&n);

while(n>0)

{

Node *new_node=(Node*)malloc(sizeof(Node));//向系统申请一个与Node一样大的空间给new_node

new_node->data=n;//这两布就是给new_node赋值 new_node的数据域赋值n

new_node->next=NULL;//new_node的指针域赋值为NULL 因为每次都要重新设置新元素 而新元素的指针域要指向下一个元素的数据域

if(head==NULL)

{

head=new_node;//如果头指针为NULL 那么头指针和尾指针都为new_node

//这个等号的意思就是覆盖 把new_node的所有属性都给head和tail 相当于把head和tail都更新了

tail=new_node;

}

else

{

tail->next=new_node;//尾指针的next指针指向new_node节点 达到将new_node插入到链条的尾部

tail=new_node;//将new_node的所有属性覆盖掉尾指针的所有属性

}

printf("读入元素:");//这两步就是重新输入元素

scanf("%d",&n);

}

return head;//单链条返回头部 就可以把所有的元素一一对应出来

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值