2.數據結構筆記學習--線性表基本操作

  • 線性表的結構定義:
    • 順序表的結構定義:
      typedef struct
      {int data[maxSize];  //存放順序表元素的數組,一般用 int A[maxSize];int length;         //存放順序表的長度,一般用 int n;
      }SeqList;

      ?

    • 單鏈表結點定義:
      typedef struct LNode
      {int data;  //存放結點的數據域struct LNode *next;         //指向后繼結點的指針
      }LNode;

      ?

    • 雙鏈表結點定義:
      typedef struct DLNode
      {int data;  //存放結點的數據域struct DLNode *prior;        //指向前驅結點的指針struct DLNode *next;         //指向后繼結點的指針
      }DLNode;

      ?

  • 順序表的算法操作:
    • 按元素值的查找算法:
      int LocateElem (SeqList L, int e)
      {int i;for(i=1; i<=L.Length; i++)if(e=L.data[i])return i;return 0;
      }

      ?

    • 插入數據元素的算法:
      //在p的位置插入新的元素e
      int insert(SeqList &L, int p, int e)  //為啥用&L
      {int i;if(p<1 || p>L.length+1 || L.length>maxSize-1)  //范圍不正確return 0;for(i=L.length; i>=p; --i)  // 依次后移L.data[i+1] = L.data[i];++(L.length);return 1;
      }

      ?

    • 初始化順序表:
      //初始化順序表
      void InitList(SeqList &L)
      {L.length = 0;
      }

      ?

    • 求指定位置元素:
      //e返回L中p的元素
      int GetElem (SeqList L, int p,int &e)  //e用引用類型
      {if(p<1||p>L.length)return 0;e = L.data[p];return 1;
      }

      ?

  • 單鏈表的算法操作:
    • 尾插法:
      //n個元素存儲在數組a中,尾插法建立鏈表C
      void CreatelistR(LNode *&C, int a[], int n)  //要改變的變量用引用型
      {LNode *s, *r;  //s指向新申請的結點,r指向C的終端結點int i;C = (LNode *)malloc(sizeof(LNode)); //申請C的頭結點空間C->next =NULL;r=C;  //此時的終端結點就是頭結點for(i=1; i<=n; ++i)  //為啥++i,不是i++
          {s = (LNode* )malloc(sizeof(LNode));s->data = a[i];//用新結點接收a的一個元素r->next = s; //r接納新結點r = r->next;//r指向終端結點,以便接納下一個結點
          }r->next = NULL;
      }
    • 頭插法:
      //n個元素存儲在數組a中,頭插法建立鏈表C
      void CreatelistF(LNode *&C, int a[], int n)  //要改變的變量用引用型
      {LNode *s;  int i;C = (LNode *)malloc(sizeof(LNode)); //申請C的頭結點空間C->next =NULL;for(i=1; i<=n; ++i)  //為啥++i,不是i++
          {s = (LNode* )malloc(sizeof(LNode));s->data = a[i];//用新結點接收a的一個元素s->next = C->next; //s所指向的指針域next指向C的開始結點C->next = s;//頭結點的指針域next指向s結點,s成為新的開始結點
          }
      }
  • 雙鏈表的算法操作:
    • 尾插法建立雙鏈表
      //尾插法建立雙鏈表
      void CreateDlistR(DLNode *&L, int a[], int n)
      {DLNode *s,*r;int i;L = (DLNode*)malloc(sizeof(DLNode));L->next = NULL;r=L;  // r始終指向終端結點,開始頭結點也是尾結點for(i=1; i<=n; i++){s = (DLNode*)malloc(sizeof(DLNode));s->data = a[i];//將s插入到L的尾部,并且r指向s,這一部分是主要記憶代碼r->next = s;s->prior = r;r = s;}r->next = NULL;}
    • 查找結點算法:
      DLNode* searchNode(DLNode *C, int x)
      {DLNode *p = C->next;while(p!= NULL){if(p->data == x)break;p = p->next;}return p;
      }
    • 插入結點的算法
      s->next = p->next;
      s->prior = p;
      p->next = s;
      s->next->prior = s;  //假如p指向最后一個結點,本行可去
    • 刪除結點的算法:
      q = p->next;
      p->next = q->next;
      q->next->prior = p;
      free(q);

?

轉載于:https://www.cnblogs.com/frl520/p/9408476.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253918.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253918.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253918.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(四)RTL級低功耗設計

前面介紹了系統級的低功耗設計&#xff0c;換句話說就是在系統級降低功耗可以考慮的方面。系統級的低功耗設計&#xff0c;主要是由系統級設計、具有豐富經驗的人員實現&#xff0c;雖然還輪不到我們設計&#xff0c;我們了解一下還是比較好的。我們前端設計人員的重點不在系統…

Unity3D 游戲前端開發技能樹(思維導圖)

如果做游戲也是一種游戲,那么這個游戲的自由度實在是太高了.(導圖源文件鏈接&#xff1a;http://pan.baidu.com/s/1eSHpH5o 密碼&#xff1a;qzl5) 最近要用思維導圖軟件Xmind把自己的思路好好捋一捋,算是溫故知新吧. 轉載于:https://www.cnblogs.com/qiaogaojian/p/6098962.ht…

js forEach

&#xfeff;&#xfeff;forEach()函數從頭到尾把數組遍歷一遍。有三個參數各自是&#xff1a;數組元素。元素的索引&#xff0c;數組本身&#xff08;假設是一個參數就是數組元素&#xff0c;也就是數組的值。var data[1,2,3,4,5,6]; var sum0; data.forEach(function(v){//當…

SQL Server 死鎖的告警監控

原文:SQL Server 死鎖的告警監控今天這篇文章總結一下如何監控SQL Server的死鎖&#xff0c;其實以前寫過MS SQL 監控錯誤日志的告警信息&#xff0c;這篇文章著重介紹如何監控數據庫的死鎖&#xff0c;當然這篇文章不分析死鎖產生的原因、以及如何解決死鎖。死鎖&#xff08;D…

關于web性能一些特性匯總

關于web性能一些特性匯總 DOMContentLoaded & load load事件是window對象上的事件。指的是網頁資源已經加載完畢&#xff08;包括但不限于DOM、圖片、音頻、腳本、插件資源以及CSS&#xff09;。 DOMContentLoaded事件是document對象上的事件。指的是DOM已經加載完畢。IE中…

(五)門級電路低功耗設計優化

&#xff08;1&#xff09;門級電路的功耗優化綜述 門級電路的功耗優化(Gate Level Power Optimization&#xff0c;簡稱GLPO)是從已經映射的門級網表開始&#xff0c;對設計進行功耗的優化以滿足功耗的約束&#xff0c;同時設計保持其性能&#xff0c;即滿足設計規則和時序的要…

SQL三大范式

第一范式(1NF) (必須有主鍵&#xff0c;列不可分) 數據庫表中的任何字段都是單一屬性的&#xff0c;不可再分 create table aa(id int,NameAge varchar(100)) insert aa values(1,無限-女 ) 沒有達到第一范式 create table aa(id int,name varcahr(10),age char(2)) insert aa …

Spring3向Spring4升級過程中quartz修改

為什么80%的碼農都做不了架構師&#xff1f;>>> 問題 nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.scheduling.quartz.CronTriggerBean] for bean with name ... 原因 org.spri…

Socket編程知識必學/SELECT 編程

Select在Socket編程中還是比較重要的&#xff0c;可是對于初學Socket的人來說都不太愛用Select寫程序&#xff0c;他們只是習慣寫諸如 connect、accept、recv或recvfrom這樣的阻塞程序&#xff08;所謂阻塞方式block&#xff0c;顧名思義&#xff0c;就是進程或是線程執行到這些…

EasyUI--messager

1.    alert 方法 <script type"text/javascript">$( function(){$.messager.alert("調用messager","文本內容") ;});</script> 這里還可以通過icon添加相應的圖標及info加入回調函數 <script type"text/javascript&quo…

ROS與navigation教程——基本導航調整指南

說明&#xff1a; 介紹如何調整機器人上的ROS導航包 步驟&#xff1a; (1) 機器人導航需要那些準備? 在調整新機器人上的導航包時遇到的大部分問題都在本地規劃器調諧參數之外的區域。機器人的里程計&#xff0c;定位&#xff0c;傳感器以及有效運行導航的其他先決條件常常…

小程序跨行跨列多列復雜表格實現

今天來實現個跨行跨列多列表格。 如圖&#xff0c;這是個列數不確定&#xff0c;有的單元格還要跨行跨列的復雜表格。 這里暫時最多支持4列&#xff0c;列數再多就放不下了。 實現原理 實現原理比較簡單&#xff0c;通過多個嵌套的循環將數據取出。 上面的例子中&#xff0c;最…

Redis學習第八課:Redis高級實用特性(一)

Redis高級實用特性 注&#xff1a;我學習的環境是vmware7.1 ubantu10.10 redis 3.0.2 1、安全性 設置客戶端連接后進行任何其他指定前需要的密碼。因為redis速度相當快&#xff0c;一個外部用戶可以在一秒鐘進行很多次的密碼嘗試&#xff0c;這就需要設定非常強大的密碼來防止…

分布式緩存的面試題9

1、面試題 如何保證緩存與數據庫的雙寫一致性&#xff1f; 2、面試官心里分析 你只要用緩存&#xff0c;就可能會涉及到緩存與數據庫雙存儲雙寫&#xff0c;你只要是雙寫&#xff0c;就一定會有數據一致性的問題&#xff0c;那么你如何解決一致性問題&#xff1f; 3、面試題剖析…

ROS與navigation教程——概述

navigation是ROS的二維導航功能包&#xff0c;簡單來說&#xff0c;就是根據輸入的里程計等傳感器的信息流和機器人的全局位置&#xff0c;通過導航算法&#xff0c;計算得出安全可靠的機器人速度控制指令。 代碼庫&#xff1a;https://github.com/ros-planning/navigation 代…

Linux下c開發 之 線程通信與pthread_cond_wait()的使用

pthread_cond_wait() /************pthread_cond_wait()的使用方法**********/pthread_mutex_lock(&qlock); pthread_cond_wait(&qready, &qlock);pthread_mutex_unlock(&qlock);/*****************************************************/The mutex passed …

ROS與navigation教程——ACML參數配置

<launch> <!--//后為wiki官網的參數說明 &#xff08;&#xff09;中為粗讀算法參數說明及理解 面臨的問題常用地圖有2種&#xff1a;1.基于特征&#xff0c;僅指明在指定位置&#xff08;地圖中包含的對象的位置&#xff09;的環境的形狀。特征表示使得調節對象的位置…

【設計模式】單例模式 Singleton Pattern

通常我們在寫程序的時候會碰到一個類只允許在整個系統中只存在一個實例&#xff08;Instance&#xff09; 的情況&#xff0c; 比如說我們想做一計數器&#xff0c;統計某些接口調用的次數&#xff0c;通常我們的數據庫連接也是只期望有一個實例。Windows系統的系統任務管理器…

修改輸入框placeholder的默認樣式

一般網頁中都用到input的placeholder屬性&#xff0c;想讓這個默認樣式和網頁保持一致&#xff0c;就需要重新設定樣式&#xff0c;百度百度&#xff1a; :-moz-placeholder { / color: #000; opacity:1; }支持/* Mozilla Firefox 4 to 18 * ::-moz-placeholder { color: #000;…

進程及線程通信總結

上文我們介紹了如何建立一個簡單的多線程程序&#xff0c;多線程之間不可避免的需要進行通信 。相比于進程間通信來說&#xff0c;線程間通信無疑是相對比較簡單的。 首先我們來看看最簡單的方法&#xff0c;那就是使用全局變量&#xff08;靜態變量也可以&#xff09;來進行通…