網站首頁 編程語言 正文
首先要明確一點,利用頭插法建立出來的單鏈表的輸出都是逆序的(就是和你的輸入順序反著來的)然后就是要明確生成的新結點是一個個加在某個結點的前面的(這個結點不一定是頭結點,下面的代碼是插在p的前頭),這就是頭插法。
怎么將結點一個個插入在某個結點前面呢?
下面的圖可以比較詳細的展示出來:
至少對我來說挺詳細的哈
p->next=head->next; //一開始 head->next=NULL;?
head->next=p;//然后將p指針指向head結點指向的下一個結點
以下是圖像展示:
然后再在頭結點的后面插入新的結點
再執行一遍上面的代碼,?然后head后面就連上了新的結點,p原本指向的結點前面也增加了一個新的結點,然后p就指向新加入的結點了。
以下是圖像展示:
注!:要先寫p->next=head->next,然后才能寫head->next=p;因為如果先寫head->next=p,然后再寫head->next=p->next,結果就會變成head->next原本要指的是插入的結點,然后又p->next=head->next,那?head->next最后指向的就不是要插入的結點了,變成了p要指向的下一個結點,而p->next一開始就是NULL。
也就是說,新的節點根本就沒連上去,p的前面根本沒有插入新的結點,head->next也一直是NULL。(這段看不懂就不看了)
然后就是不斷地重復上述過程,在頭節點和新插入的節點之間建立聯系,同時在新插入的節點和上一個插入的節點之間建立聯系,最終得到一個完整的單鏈表。
以下是代碼展示:
#include <bits/stdc++.h>
using namespace std;
//利用頭插法建立的單鏈表輸出都是逆序的
typedef struct node
{
int data;//數據域,存放數據
struct node *next;//指針域,存放指針,存放后繼結點的信息
}no;//no是結構體的名字
int main()
{
no *head,*tail,*p;
head=new no;
head->next=NULL;
tail=head;
int n;
cin>>n;
while(n)
{
p=new no;
p->data=n;
p->next=head->next;//第一次的時候p->next指的是NULL,
//再往后,指的就是頭結點后面的結點
head->next=p;//指針p也可以向前移動的哦,不一定就是要向后移動
cin>>n;
}
p=head->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
return 0;
}
原文鏈接:https://blog.csdn.net/nefu_lmy/article/details/118976669
相關推薦
- 2022-04-19 python?tkinter實現彈窗的輸入輸出_python
- 2022-03-22 C++實現簡易選課系統代碼分享_C 語言
- 2022-09-29 Python組合數據類型詳解_python
- 2023-06-19 CentOS7使用yum安裝Golang的超詳細步驟_Golang
- 2021-12-11 Redis線程模型的原理分析_Redis
- 2022-06-01 Android實現極簡打開攝像頭_Android
- 2022-11-17 獲取C++變量類型的簡單方法_C 語言
- 2022-06-01 Androidstudio調用攝像頭拍照并保存照片_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支