本人所有文章都受版权保护,著作权归本人(Joseph_tony)所有,未经授权,禁止转载,若不得不转载,请注明原文网址链接!谢谢配合!
以下所有内容相互连接
0.结构体定义
typedef struct node//定义方式
{
};//结尾一定一定一定要加分号";",绝对绝对!!!!!
1.定义节点
typedef struct node
{
int data;//数据域,存放数据信息
node *next;//指针域,存放下一个节点的地址
}node;
2.链表插入
2.1区分->和.
-> 用过指针进行间接引用时使用
. 进行直接引用时使用
void insert(node *p,node e)//这里只介绍右插法
{
// 将节点e插入到p位置
//1. 右插 插入p的右边
node *aft=p->next;// aft中存储p后一个节点位置
e.next=aft;
p->next=&e;
/*
上方步骤基本等同于
int a,b,t; cin>>a>>b>>t;
t=a;
a=b;
b=t;
*/
}
3.链表创建
void creat(node *h,int n)
{
// 将n个元素 创建成一个单链表
node *p=h;//p指向链表的最后一个元素
for(int i=1;i<=n;i++)
{
int x;
cin>>x;//输入数字
//开辟新的节点空间
node *s=new node;// 开辟node类型的空间,将地址给s
//能通过指针s指向新的空间
s->data=x;//将数字存入
s->next=NULL; //使下一个空间为空
// 将新节点s插入到链表的后边 尾插法
insert(p,s);
// 位置的更新
p=s;
// // 将新节点s插入到链表的前边 头插法
// insert(h,s);
}
}
4.链表遍历
void show(node *h)
{
//遍历链表
node *p=h->next;
while(p!=NULL){//p不为空
cout<<p->data<<" ";//输出可进行改动
//p向后移动
p=p->next; //将p下一个空间赋值为p
}
}
5.链表查找
node *search(node *h,int k){
// 返回链表中数据为k的节点位置
node *p=h->next;
while(p!=NULL){//p不为空
//cout<<p->data<<" ";
if(p->data==k) return p;//p的数据等于所需寻找的内容,返回p
//p向后移动
p=p->next; //将p下一个空间赋值为p
}
return NULL;
}
本人所有文章都受版权保护,著作权归本人(Joseph_tony)所有,未经授权,禁止转载,若不得不转载,请注明原文网址链接!谢谢配合!