单链表
作者:
RecSys
,
2021-02-08 19:33:32
,
所有人可见
,
阅读 384
// //1.单链表的储存
// struct Node
// {
// int data;//数据域
// Node *next;//指针域
// };
// Node *head;//头指针
// Q1:一个节点占多大内存?
// sizeof(Node) 16byte
// sizeof(data) 4 byte
// sizeif(next) 8 byte
// 方便指针的移动 选择占用内存大的整数倍
// //2.单链表的创建和输出
#include<iostream>
using namespace std;
struct Node//链表节点的定义
{
int data;//数据域
Node *next;//指针域
};
Node *head;//头节点在全局区
void CreateLink()//单链表的创建
{
int x;
Node *tail,*p;//在栈区
printf("&head:%d\n&tail:%d &p:%d\n",&head,&tail,&p);//跟踪
head=new Node;
printf("head=%d",head);
tail=head;
tail->next=NULL;
printf("请输入数值,-1结束\n输入:");
while(cin>>x&&x!=-1)
{
p=new Node;//在堆区申请一个节点
p->data=x;
p->next=NULL;
printf("&head:%d\n&tail:%d &p:%d\n",&head,&tail,&p);//跟踪
tail->next=p;//尾插法
tail = p;//尾指针后移动一位
}
}
void Print()
{
Node *p=head->next;
printf("链表输出:");
while(p!=NULL)
{
printf("%d",p->data);
p=p->next;
}
}
int main()
{
CreateLink();
Print();
return 0;
}
// //1.单链表的储存
// struct Node
// {
// int data;//数据域
// Node *next;//指针域
// };
// Node *head;//头指针
// Q1:一个节点占多大内存?
// sizeof(Node) 16byte
// sizeof(data) 4 byte
// sizeif(next) 8 byte
// 方便指针的移动 选择占用内存大的整数倍
// //2.单链表的创建和输出
#include<iostream>
using namespace std;
struct Node//链表节点的定义
{
int data;//数据域
Node *next;//指针域
};
Node *head;//头节点在全局区
void CreateLink()//单链表的创建
{
int x;
Node *tail,*p;//在栈区
printf("&head:%d\n&tail:%d &p:%d\n",&head,&tail,&p);//跟踪
head=NULL;
printf("请输入数值,-1结束\n输入:");
while(cin>>x&&x!=-1)
{
p=new Node;//在堆区申请一个节点
p->data=x;
p->next=NULL;
printf("&head:%d\n&tail:%d &p:%d\n",&head,&tail,&p);//跟踪
if(head==NULL)
{
head=p;//头指针存放第一个节点的地址
printf("head:%d\n",head);
}
else tail->next=p;//尾插法
tail = p;//尾指针后移动一位
}
}
void Print()
{
Node *p=head;
printf("链表输出:");
while(p!=NULL)
{
printf("%d",p->data);
p=p->next;
}
}
int main()
{
CreateLink();
Print();
return 0;
}