連結串列入門與插入連結串列
連結串列為資料與指標相連,便於插入資料
缺點在於查詢比較費時,需要遍歷整個連結串列
#include<stdio.h>
#include<stdlib.h>
//建立結構體表示連結串列的結點型別
struct node
{
int data;
struct node *next;
};
int main()
{
struct node *head,*p,*q,*t;
int i,n,a;
scanf("%d",&n);
head=NULL;//頭指標初始化為空
//其中->表示結構體指標運算子,用來訪問結構體內部的成員
for(i=1;1<=n;i++)//迴圈讀入n個數
{
scanf("%d",&a);
p=(struct node *)malloc(sizeof(struct node));
//動態申請一個空間,用來存放一個節點,並用臨時指標p指向這個節點
p->data=a;//將資料存入當前節點
p->next=NULL;//設定下一個節點為空
if(head=NULL)
head=p;//如果這是第一個建立的節點,則將頭指標指向他
else
q->next=p;//如果不是第一個節點,則將上一個後繼指標指向他
q=p;//指標q也指向當前節點
}
scanf("%d",&a);//讀入待插入的數
t=head;//從連結串列頭部開始遍歷
while(t!=NULL)//到達尾部停止迴圈
{
if(t->next==NULL||t->next->data>a)
//當前遍歷的節點是最後一個或下一個節點大於待插入的數時插入
{
p=(struct node *)malloc(sizeof(struct node));//存放新節點
p->data=a;
p->next=t->next;
t->next=p;
break;
}
t=t->next;
}
t=head;
while(t!=NULL)
{
printf("%d ",t->data);
t=t->next;
}
getchar();getchar();
return 0;
}
相關文章
- 連結串列-插入排序排序
- 結點插入到單連結串列中
- 連結串列-雙向連結串列
- 連結串列-迴圈連結串列
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- 連結串列基礎2(超簡單)--單連結串列的插入和刪除
- 連結串列4: 迴圈連結串列
- 連結串列-單連結串列實現
- 雙向連結串列 尾節點插入
- (連結串列)連結串列的排序問題排序
- 陣列與連結串列陣列
- 雙向連結串列————查詢、刪除、插入結點
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 連結串列
- 資料結構:單迴圈連結串列的建立插入與刪除資料結構
- 單連結串列的排序(插入,選擇,冒泡)排序
- javascript中的連結串列結構—雙向連結串列JavaScript
- 結構與演算法(03):單向連結串列和雙向連結串列演算法
- Leetcode_86_分割連結串列_連結串列LeetCode
- 【LeetCode】->連結串列->通向連結串列自由之路LeetCode
- php連結串列PHP
- 連結串列操作
- 連結串列逆序
- 2、連結串列
- 雙向連結串列的操作(插入和刪除)
- 為什麼陣列查詢比連結串列要快?而插入刪除比連結串列效率低陣列
- 單向迴圈連結串列——查詢、刪除、插入結點
- 雙向迴圈連結串列————遍歷、查詢、插入結點
- 反轉連結串列、合併連結串列、樹的子結構
- 線性結構 陣列與連結串列陣列
- Redis資料結構—連結串列與字典Redis資料結構
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 連結串列以及golang介入式連結串列的實現Golang
- Linux核心連結串列-通用連結串列的實現Linux
- 【資料結構與演算法學習】線性表(順序表、單連結串列、雙向連結串列、迴圈連結串列)資料結構演算法
- 資料結構實驗之連結串列九:雙向連結串列資料結構
- 資料結構實驗之連結串列二:逆序建立連結串列資料結構