91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

單鏈表實現“插入”和“刪除”操作

發布時間:2020-06-29 03:55:28 來源:網絡 閱讀:2005 作者:杜玉寶 欄目:編程語言

   在單鏈表中,又如何實現“插入”和“刪除”操作呢?

插入操作:

   假設我們要在線性表的兩個數據元素a和b之間插入一個數據元素x,已知p為其單鏈表存儲結構中指向結點a的指針。為插入數據元素x,首先要生成一個數據域為x的結點,然后插入在單鏈表中。根據插入操作的邏輯定義,還需修改結點a中的指針域,令其指向結點x,而結點x中的指針域應該指向b結點,從而實現3個元素a,b和x之間邏輯關系的變化。

   假設s為指向結點x的指針。則上述指針修改用語句描述即為:

   s->next=p->next;

   p->next=s;

刪除操作:

   如果在線性表中刪除元素b時,為在單鏈表中實現元素a,b和c之間邏輯關系的變化,僅需要修改結點a中的指針域即可。假設p為指向結點a的指針,則修改指針的語句為:

   p->next=p->next->next;

  由以上可知,在已知鏈表中元素插入或刪除的確切位置的情況下,在單鏈表中插入或刪除一個結點時,僅需修改指針為不需要移動元素。

 插入函數ListInsert_L:要求是在已知鏈表中的確切位置插入一個結點。所以需要向函數內傳遞已知鏈表L,插入的確切位置i,以及即將插入的結點數據元素e。

  ListInsert_L(LinkList &L,int i,ElemType e)

  //第一步:將鏈表的頭結點的指針域單鏈表存儲結構的指針p

  p=L;//&L即為鏈表L的的頭結點地址

  j=0;//計數器

  //第二步:找到在將在鏈表i處,即要插入新結點的位置。

  //方法:先找到鏈表i-1處的結點。此結點的指針域即指向i處結點的指針域

 while(p&&j<i-1)

 {

  p=p->next;//p->next是指向第j+1個數據元素的指針

  ++j;//

 }

  //第三步:判斷是否越界已知鏈表

 //如果i小于1或者大于表長+1,即越界,則返回錯誤

 if(!p||j>i-1)

 return ERROP;

  //第四步:找到i出結點,新建一個結點(包括數據域和指針域)代表即將插入的結點

 //生成新結點

 s=(LinkList)malloc(sizeof(LNode));//新結點s

 s->data=e;//新結點的數據域賦值為將插入的數據元素e

 //因為原來i處結點指針域p保存著指向下一個i+1處結點的指針域。

 //要插入新結點,即原來i+1處的結點變為i+2處的幾點,新建結點變為i+1處的結點

 //即新建結點指向原來i+1處的結點的指針域,所以s->next=p->next

 //因為此時p代表的是i處的結點,p->代表i+1處的結點指針域賦值給新結點指針域

 s->next=p->next;

 //因為此時p代表的是i處的結點,p->next代表i+1處的結點指針域賦值給新結點指針域

  //完成插入操作時,新建結點s變為i+1處的結點。所以p->next指向s,即將s賦值給p->next.

 p->next=s;

 return OK;

}

   

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金溪县| 丰台区| 闻喜县| 岱山县| 沅江市| 衢州市| 绥化市| 河间市| 曲靖市| 武汉市| 鄂温| 株洲市| 宝坻区| 姚安县| 龙南县| 青河县| 桦甸市| 醴陵市| 泾阳县| 津南区| 平阳县| 铜鼓县| 襄樊市| 太康县| 莱阳市| 同德县| 榆林市| 八宿县| 铜川市| 新津县| 江安县| 济南市| 清水河县| 科技| 铜梁县| 鄄城县| 邯郸市| 云南省| 颍上县| 镇原县| 响水县|