單鏈表的建立和增刪改查程式碼及講解
//---單鏈表的單鏈式儲存結構---- typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; //1.初始化 int Initlist(LinkList L) { L=NULL; return OK; } //初始化(帶頭結點) int Initlist(LinkList L) { L=(LNode*)malloc(sizeof(Lnode));//為頭結點分配記憶體空間 L->next=NULL; return OK; } //求長度 int length_L(LinkList L) { i=0; p=L->next;//把第一個資料賦給p while(p)//但p不為空的時候,那就一直計數 { i++; p=p->next; } return i; } //3.訪問第I個元素 Status GetElem_L(LinkList L,int i,ElemType &e) //L為帶頭結點的單鏈表的頭指標 { p=L->next;//p是連結串列的第一個元素 j=1; while(p&&j<i)//當p指標存在並且沒有到底i個元素的時候 { p=p->next;//讓p向前移動 j++;//讓J也自加1,直到J=I } if(!p||j>i)//找到最後還沒有找到是,返回ERROR return ERROR; e=p->data;//把找到的數值賦給e,然後返回。 return OK; } //4.在p所指節點之後插入某一元素 q=(LinkList)malloc(sizeof(LNode)) q->data=x;//資料域賦值 q->next=p->next;//(1)插入 p->next=q;//(2) //5.插入:在帶頭指標的單鏈表L中第I個位置之前插入元素e Status Listinsert_L(LinkList &L,int i,ElemType e) { p=L; j=0; while(p&&j<i-1)//知道移動到需要插入的前一個元素 { p=p->next; j++; } if(!p||j>i-1)//如果移動到結尾還沒有達到第I個元素,那就返回ERROR return ERROR; s=(LinkList)malloc(sizeof(LNode));//為插入的元素分配記憶體空間 s->data=e; s->next=p->next;//(1)插入操作 p->next=s;//(2) return OK; } //6.刪除:刪除P所指元素的後繼元素 //直接把前一節點的指標跳過一個節點,然後到下一個節點 Status ListDelete_L(LinkList &L,int i,ElemType &e) //在帶頭結點的單鏈線性表L中,刪除第i個元素,並由e返回其值 { p=L; j=0; while(p->next&&j<i-1) {//尋找第i個節點,並令p指向其前驅 p=p->next; j++; } if(!(p->next)||j>i-1) return ERROR; p->next=p->next->next;//跳過刪除的那個節點 e=q->data;//把刪除的值賦給e free(q);//釋放已刪除節點的空間 return OK; } //7.建立:輸入線性表元素,以單鏈表儲存方式儲存,即建立單鏈表 //方法一:從頭到尾,即從第一個元素節點逐個建立各個元素節點。 //每次都是鏈到連結串列的最後。(從無到有的建立) //建立頭結點 L.(LinkList)malloc(sizeof(LNode)); L->next=NULL; r=L;//指標r始終指向尾節點,然後向後移動 //讀入一個元素,鏈入其中: p=(LinkList)malloc(sizeof(LNode));//為插入的新的節點開闢空間 scanf(&p->data);//讀入資料 p->next=NULL;//尾節點的下一位為空 r->next=p;//指標r始終指向尾節點,然後移動 r=r->next; //方法二:從尾到頭, //建立頭結點 L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; //讀入一個元素,鏈入其中 p=(LinkList)malloc(sizeof(LNode));//為新節點開闢記憶體空間 scanf(&p->data);//讀入資料 p->next=L->next;//讓頭結點指標的地址賦給新節點的指標指向 L->next=p;//讓頭結點指標指向新插入的數值元素 //建立演算法:(逆序) void CreateList_L(LinkList &L,int n) { L=(LinkList)malloc(sizeof(LNode));//為頭節點分配記憶體空間 L->next=NULL; for(i=n;i>0;i--) { p=(LinkList)malloc(sizeof(LNode));//為新節點開闢內除空間 scanf(&p->data);//讀入資料 p->next=L->next;//讓插入的節點指標指向尾節點,然後把頭節點指標破壞 L->next=p;//讓頭結點指標指向新節點 } } //單鏈表的歸併演算法 //已知單鏈表La和Lb的元素按值非遞減排列 void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc) { pa=La->next;//兩個連結串列La和Lb pb=Lb->next; Lc=pc=La;//讓La的頭結點指標最為起始點 while(pa&&pb)//當兩個連結串列都非空的時候 { if(pa->data<=pb->data)//如果La->data<=pb->data,那麼就讓La插入 { pc->next=pa;//讓La插入,並讓連結串列La下一個元素與Lb比較 pc=pa;//讓移動指標指向連結串列La pa=pa->next; } else { pc->next=pb; pc=pb; pb=pb->next; } pc->next=pa?pa:pb;//到最後,如果LA有剩餘就全部插入,否則就把LB插入 //等價於如下程式碼 //if(pa) //pc->next=a; //else pc->next=pb free(Lb);//由於Lc是以LA作為起始的,最後釋放連結串列LB } }
相關推薦
單鏈表的建立和增刪改查程式碼及講解
//---單鏈表的單鏈式儲存結構---- typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; //1.初始化 int Initlist(LinkList L) { L
Django中ORM表的建立和增刪改查方法示例
Django中ORM表的建立和增刪改查方法示例 Django作為重量級的Python web框架,在做專案時肯定少不了與資料庫打交道,程式設計人員對資料庫的語法簡單的還行,但過多的資料庫語句不是程式設計人員的重點物件。因此用ORM來操作資料庫相當快捷。今天來介紹一下
【pandas】[1] Series 入門(建立和增刪改查)
作者:lianghc 地址:http://blog.csdn.net/zutsoft/article/details/51482573 Series 是pandas兩大資料結構中(DataFrame,Series)的一種。使用pandas 前需要將pandas 模組引入,因
oracle資料庫建立及刪除表空間、使用者和增刪改查
資料庫 檢視sql資料庫中的所有表空間 select * from dba_data_files; 刪除表空間 SQL> drop tablespace db_data including contents and datafiles;
mysql-3 資料表的建立、增刪改查
建立資料表 通用語法:CREATE TABLE table_name (column_name column_type); CREATE TABLE IF NOT EXISTS `csj_tbl`( `csj_id` INT UNSIGNED AUTO_INCREMENT, `csj_ti
基於 Linux 的雙鏈表的增刪改查程式碼
/************************************************************************* > File Name: doublelinklist.c > Author: Wenfei6316
【pandas】[2] DataFrame 基礎,建立DataFrame和增刪改查基本操作(1)
作者:lianghc 地址:http://blog.csdn.net/zutsoft DataFrame 是pandas最常用的資料結構,類似於資料庫中的表,不過DataFrame不僅僅限制於2維,可以建立多維資料表。DataFrame既有行索引,也有列
SpringMVC表單資料增刪改查簡易梳理(含例項程式碼)
使用SpringMVC建立表單進行資料的增刪改查是javaEE開發的基本功,本人根據自己最近開發的基於jeecms框架的網站平臺來梳理資料增刪改查的思路。 首先根據所需表單頁面設計資料庫,定義不同欄位的資料型別和長度,若存在多張資料表,還需設計不同表間的
012:子查詢和增刪改查
err eat 多個 cal mat 行數 分類 查詢 同時 一. 子查詢 子查詢就是指在一個select語句中嵌套另一個select語句。同時,子查詢必須包含括號。 MySQL 5.6.x 版本之前,MySQL的子查詢性能較差,但是從5.6開始,不存在性能差的問題。
詳細記錄->使用Maven+SSM框架,實現單表簡單的增刪改查
話不多說,ssm框架整合小列子,這次記錄一個單表增刪改查的ssm例子,所以才手寫mapper,平時我都是用逆向工程自動生成mapper,簡單方便。 需要了解逆向工程請看:https://blog.csdn.net/Destiny_stri
Hibernate的入門之配置檔案和增刪改查
首先使用maven匯入jar包,然後配置主xml檔案 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Confi
java DMO及增刪改查程式碼的自動生成
之前我考慮過多種自動生成程式碼的提供方式,比如web的方式,通過在頁面文字框裡面輸入各種引數,比如模板檔案地址,生成檔案地址,資料庫名,資料庫使用者名稱和密碼等,點選生成按鈕就可以生成原始碼檔案。但這樣需要部署啟動這個web程式。使用java的圖形使用者介面,但我對java圖形的相關API並不瞭解,
MYSQL的常用命令和增刪改查語句和資料型別
連線命令:mysql -h[主機地址] -u[使用者名稱] -p[使用者密碼] 建立資料庫:create database [庫名] 顯示所有資料庫: show databases; 開啟資料庫:use [庫名] 當前選擇的庫狀態:SELECT DATABASE(); 建立資料表:CRE
告別編寫基礎的增刪改查程式碼
告別編寫基礎的增刪改查程式碼 一、 說明 1.本文基本幫你實現不用編寫基礎的增刪改查程式碼 注意是“基礎”的,你只需要寫一個實體類,其他都可以自動生成包括 mapper、dao、service、controller、建表sql。 &nbs
spring data jpa之資料增刪改查程式碼優化
Spring data jpa為減少查詢資料庫次數,先將符合條件的資料查出來,返回的是一個list集合,遍歷集合將資料裝入map中,根據需要設定key,value,然後判斷map是否包含某個key或者value以此判斷資料是否在資料庫中已經存在。這樣減少了訪問資料庫的次數,減小了伺服器壓力,將大部分
【springboot】4、SpringBoot+Mybatis多表操作以及增刪改查
Mybatis整合成功之後,接下來了解一下增刪改查的配置以及多表操作,先從增刪改查開始 為了方便後面的多表操作,現在針對資料表的配置我這裡全部在xml中配置(暫時不用註解的方式了),先看一下目前的工程結構(注意包名) 首先為了瞭解增刪改查的操作,我這裡將針對資料庫中的一個文
平衡二叉樹建立及其增刪改查(JAVA)
平衡二叉樹:指的是左右子樹高度差的絕對值不超過一的二叉排序樹。 主要思路:1、用左高度跟右高度代替平衡因子,大於1進行L~調整,小於-1進行R~調整 2、每次插入都通過遞迴計算一次各結點高度,然後進行旋轉調整
Django學習【第6篇】:Django之ORM單表操作(增刪改查)
大小寫 則表達式 分享 cnblogs 可能 集合 數據庫 cut 對象 django之數據庫表的單表查詢 一、添加表記錄 對於單表有兩種方式 # 添加數據的兩種方式 # 方式一:實例化對象就是一條表記錄
golang mongoDB 的集合建立以及增刪改查操作
mongo官方沒有golang 的官方驅動,但是有一個社群驅動: http://labix.org/mgo api文件:https://godoc.org/gopkg.in/mgo.v2#Collection.Update 資料的連線操作請看的我的上一篇部
php 如何在HTML頁面中實現對資料庫表資料的增刪改查
上一篇詳細說明了如何將資料庫中的資料列印到html頁面上,本篇將介紹如何在HTML頁面的表格裡進行對資料庫內容的增刪改查還是借用上一篇的頁面,在此基礎上增加了操作按鈕:<!doctype html><html><head><meta charset="utf-8"