汕头网站推广seo,湖南新型网络营销方式,PHP与网站建设的课后笔记,设计logo网站免定义存储结构(以单向链表为主)
对于链表的定义#xff0c;通过结构体进行定义#xff0c;包括两部分#xff0c;一是数据域#xff0c;另一个就是指针#xff0c;用于指向下一个节点。
1#xff0c;创建链表
定义链表#xff1a;
struct nodesq{int data;//数据域通过结构体进行定义包括两部分一是数据域另一个就是指针用于指向下一个节点。
1创建链表
定义链表
struct nodesq{int data;//数据域这里以int为例struct nodesq * netx;//指向自身类型的指针域
}创建链表栈式(往前/左走)、队列式(往后/右走) 一般创建链表是通过循环创建的这里为了方便理解才这样创建的。
struct nodesq *p1,*p2,*p3;
p1 new nodesq;
p1-date a1;
p2 new nodesq;
p2-date a2;
//p2-next p1;//栈式即后来的当head
p1-next p2;//队列式如图所示
2链表的查询(按序号、按数据元素) 例如找数据域为a3的节点(按数据元素查找) 首先有头有尾成链才是链表链表的查询是建立在已创建链表的基础上。 只需要查找p-data是不是a3即可若不是接着查找下一个pp-next;
head p;//首先将给定的head头指针赋值给指针p
while(p-data ! a3){//若当前节点的数据域不是a3p p-next;//进行下一个节点判断
}例如找序号为4的节点(按序号查找) 也就是查询4次即可。 首先有头有尾成链才是链表链表的查询是建立在已创建链表的基础上。 这里只需要定义一个变量wsq用于存储序号即可通过自加操作到达4则停下即可。
head p;//首先将给定的head头指针赋值给指针p
int wsq0;
while(wsq ! 4){//若当前节点的数据域不是a3p p-next;//进行下一个节点判断wsq;//序号自加
}3链表的插入 例如在a3之前插入数据域为a2‘的节点S 首先有头有尾成链才是链表链表的查询是建立在已创建链表的基础上。 在a3之前插入a2’这里关键点在于①找到a3前的一个节点a2将新插入的a2‘数据域对应的节点S的next指向a3节点。②a2所在的节点的next指向a2’所在的节点S。
head p;//首先将给定的head头指针赋值给指针p
while(p-next-data ! a3){//找a3前一个节点p n-next;//没找到指针找下一个节点
}//当结束循环之后p指向a3上一个节点位置
S-next p-next;//p-next此时为a3所在节点赋值给S节点的next即S节点的next指向a3所在节点此时a2所在节点和S节点的next都指向a3所在的节点
p-next S;//将a2所在的节点原本指向a3所在节点给改成指向S节点最终实现效果图如下
4链表的删除 例如删除a3所在的节点 首先有头有尾成链才是链表链表的查询是建立在已创建链表的基础上。 删除a3所在的节点需要找到a3所在的节点之前的一个节点即a2所在的节点。然后将a2所在的节点的next指向a3所在节点的下一个节点。
head p;//首先将给定的head头指针赋值给指针p
while(p-next-data ! a3){//找a3前一个节点p n-next;//没找到指针找下一个节点
}//当结束循环之后p指向a3上一个节点位置即a2所在的节点
p-next p-next-next;//p-next-next即a3所在节点的下一个节点也就是a4所在的节点位置 赋值给 p-next也就是a2所在的节点的next之后a3需要进行回收一下即可 最后的效果图如下
5链表的输出
p head;
while(p ! NULL){//全部挨个输出printf(%d,p-data);p p-next;//找下一个节点
}
while(p-next ! NULL){//最后一个节点不输出printf(%d,p-data);p p-next;//找下一个节点
}6循环链表 7双向链表 8带头链表 9无头链表