線性連結串列的插入與刪除
程式碼功能:實現連結串列插入與刪除的基本功能
線性表插入與刪除操作
Input
第一行給出線性表內現有資料元素的數目N,1<=N<=10;第二行給出N個整數:a1、a2、a3…aN,整數之間用一個空格隔開,表示線性表現有的資料元素。第三行給出兩個整數K、E1,1<=K<=N,表示在第K個元素前插入值為E1的資料元素;第四行給出一個整數E2,表示線上性表中刪除第一個值為E2的資料元素(假定線性表裡一定存在值為E2的資料元素)。
Output
在一行內按次序輸出進行插入和刪除後線性表的所有資料元素,資料元素之間用一個空格隔開。
Sample Input
8 12 13 21 24 28 30 42 77 5 25 24
Sample Output
12 13 21 25 28 30 42 77
AC程式碼:
#include<stdio.h> #include<malloc.h> typedef struct Node { int date; struct Node *next; }Node,*LinkList; void CreateList(LinkList &pa,int n) //建立連結串列 { LinkList p,q; //p=(LinkList)malloc(sizeof(Node)); p=pa; int i,a; for(i=0;i<n;++i) { q=(LinkList)malloc(sizeof(Node)); scanf("%d",&(q->date)); p->next=q; q->next=NULL; p=q; } } void print(LinkList &pa,int n) //輸出連結串列 pa為頭結點,n個有效節點 { int i; LinkList p=pa->next; printf("%d",p->date); for(i=2;i<=n;++i) { p=p->next; printf(" %d",p->date); } printf("\n"); } bool DeleteList(LinkList &pa,int m,int &n) //刪除資料域為m的節點 { LinkList p=pa,q=NULL; int j=1; while(p&&j<=n) { if(p->next->date==m) { q=p->next; p->next=p->next->next; free(q);n--; //printf("%d#\n",n); return true; } j++; p=p->next; } return false; } bool InsertList(LinkList &pa,int k,int E1,int &n) //k前在插入節點(資料域為E1) { LinkList p=pa,s; int j=0; //j=0可是空連結串列中插入元素 while(p->next&&j<=k-1) { if(j==k-1) { s=(LinkList)malloc(sizeof(Node)); s->date=E1; s->next=p->next; p->next=s; n++; return true; } j++; p=p->next; } return false; } int main() { LinkList L,p; //L為頭指標 L=(LinkList)malloc(sizeof(Node)); int N,i,K,E1,E2; while(~scanf("%d",&N)){ CreateList(L,N); scanf("%d%d",&K,&E1); InsertList(L,K,E1,N); scanf("%d",&E2); DeleteList(L,E2,N); print(L,N); } //while(1); return 0; }
相關推薦
靜態連結串列插入和刪除操作詳解(C語言程式碼實現)
本節主要講解靜態連結串列的插入和刪除操作,有關靜態連結串列的詳細講解請閱讀《靜態連結串列及C語言實現》一文。 在講解靜態連結串列的插入和刪除操作之前,我們假設有如下的靜態連結串列: 圖中,array[0] 用作備用連結串列的頭結點,array[1] 用作存放資料的連結串列的頭結點,array[0]
雙向連結串列插入、刪除操作
來源:http://blog.csdn.net/csdanca11/article/details/7173856 雙向連結串列 迴圈單鏈表的出現,雖然能夠實現從任一結點出發沿著鏈能找到其前驅結點,但時間耗費是O(n)。如果希望從表中快速確定某一個結點的前驅,
C寫連結串列與線性表的建立插入與刪除
連結串列 #include <bits/stdc++.h> typedef struct node { int data; struct node *next; } Lnode; Lnode *L; void dele(int pos){ Lnode *p;
線性連結串列的插入與刪除
程式碼功能:實現連結串列插入與刪除的基本功能 線性表插入與刪除操作 Input 第一行給出線性表內現有資料元素的數目N,1<=N<=10;第二行給出N個整數:a1、a2、a3…aN,
C語言連結串列節點插入與刪除
線性表操作 順序表是我們資料結構中的基本儲存形式,現在給定一個順序表,有如下操作: Insert X Y:在順序表中X位置插入Y元素,遍歷輸出當前順序表的所有元素。 Delete X:刪除順序表中的X元素,如果有多個X元素,只刪除第一個X,遍歷輸出當前順序的所有
雙向連結串列的插入與刪除節點
#include <stdio.h> #include <malloc.h> typedef struct linknode//定義雙向連結串列 { int data; linknode *prior,*next; } Node,*
【資料結構】順序表、單鏈表、迴圈連結串列的插入與刪除
寫在前面的 順序表 插入 刪除 定位 單鏈表 插入 刪除 總結 寫在前面的 在複習資料結構的過程中對於連結串列的操作總是容易忘記,時不時的就不知道具體的該怎麼
使用雙重指標實現連結串列結點的插入與刪除
單鏈表結點的插入和刪除是資料結構中很基本的操作。如果單鏈錶帶有頭結點,那麼可以把頭結點指標傳遞給插入和刪除函式;可如果對無頭結點的單鏈表進行上述操作,僅傳遞頭指標(指向第一個結點的指標),在插入或刪除操作改變連結串列頭指標時,將會有些問題。 下面我們通過一個例
線性連結串列的查詢插入刪除演算法
插入操作具體演算法 Status ListInsert_L(Linklist &L,int i,Elemtype e){ //在帶頭結點的單鏈表L中第i個位置之前插入元素e LinkList p=L;//p為移動指標,指向頭結點
單鏈表(線性連結串列)資料元素插入和刪除
資料元素的插入:為插入資料元素x,首先要生成一個數據域為x的結點,然後插入在單鏈表中,根據插入操作的邏輯定義,還需要修改結點a中的指標域,令其指向節點x,而結點x中的指標域應指向結點b,從而實現3個元素a,b和x之間邏輯關係的變化。 資料元素的刪除:線上性
資料結構 線性連結串列的創立及其基本操作初始化、遍歷、銷燬、判空、求表長、刪除、插入等
最近寫了個數據結構的單鏈表,其中包括十來個基本操作演算法,包括了建立單鏈表、刪除、插入、定位、遍歷等基本的操作。在VS上運行了一下,可以通過,感覺還不錯,和大家分享一下! 我是建立了一個C++專案,在專案下寫的,你們也可以建立專案把下面的東西複製到編譯器上試試! 第一部分是
線性表的順序儲存表示時的插入與刪除
線性表的插入與刪除屬於算法系列,學資料結構的寶寶們應該知道這點,首先說一下演算法的位置與c語言中陣列位置的記作方法一樣,都是從0開始,比如說線性表中第i個數據元素,那麼它的位置是L.elem[i-1]。這個沒什麼難度,因為計算機的寶寶們都學習過陣列,二者是一樣的。 下面討論一下線性表的插入和刪除
連結串列插入(線性表)
題目描述 (線性表)已知一單鏈表,從第二個結點至表尾遞增有序,(設a1<x<an)如下圖(“第二個結點至表尾”指a1…an )。試編寫程式,將第一個結點刪除並插入表中適當位置,使整個連結串列遞增有序。 輸入 輸入長度n:7 輸入資料:4 1 2 3 6 8
資料結構與演算法-----單向線性連結串列(逆轉和反向列印)
單向連結串列沒有前指標,所以實現反向列印還是比較麻煩,我們這裡使用遞迴原理解決此問題。 這裡提到逆轉,也就是將單鏈表的next指標指向前一個節點,我們也使用遞迴實現。 // 練習:實現單向線性連
資料結構—連結串列元素的刪除和插入
連結串列相對於線性表的優點就在於插入和刪除十分方便。 那麼我用一個有意思的比喻來描述一下這個過程。 插入: 小紅和小琴是好閨蜜,她們天天都拉著手(找男的比喻不大好啊,23333) 咳咳,就是這樣(圖中藍色上衣的是小紅,綠色裙子的是小琴) 小紅的
線性連結串列的建立與顯示
#include<stdio.h> #include<malloc.h> typedef int ElemType; typedef struct Node { ElemType data; struct Node*next; }LNode; v
連結串列---------插入、查詢、刪除重複元素、找到倒數第K個值、找到反轉、列印連結串列、查詢中間元素、是否有環、是否相交
package JBLinkList; public class MyLinkList { Node head ; public MyLinkList(){ head = null; } /** * 新增結點(尾部) * @param d */
線性表的順序儲存結構及該結構的插入與刪除
順序儲存定義 線性表的順序儲存結構,指的是用一段地址連續的儲存單元依次儲存線性表的資料元素。 順序儲存方式 線性表的順序儲存結構,就是在記憶體中找了塊地兒,通過站位的形式,把
資料結構之線性表的順序儲存結構(陣列)的插入與刪除
線性表的順序存數結構:指的是用一段地址連續的儲存單元一次儲存線性表的資料元素 在記憶體中找塊記憶體,把相同資料型別的資料元素一次存放在這塊空間中。可以用以為陣列來實現順序儲存結構。陣列的長
二叉排序樹的插入與刪除
else post 相等 大於 truct art parent node -m 二叉排序樹的插入與刪除可能會破壞二叉排序樹的性質,如今要求插入和刪除操作保持其性質 二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹: (1)若左子樹不空,則左子樹上全部結點的