最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言鏈表完整操作演示

 更新時(shí)間:2018年05月22日 08:39:34   作者:chulijun3107  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言鏈表的完整操作演示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C鏈表操作演示的具體代碼,供大家參考,具體內(nèi)容如下

頭文件:link_0505.h

/* 
鏈表演示 
*/ 
#ifndef __LINK_0505 
#define __LINK_0505 
typedef struct node{ 
  int num; 
  struct node* p_next; 
}node; 
typedef struct  
{ 
  node head,tail; 
}link; 
//鏈表的初始化函數(shù) 
void link_init(link *); 
//鏈表的清理函數(shù) 
void link_deinit(link *); 
//判斷鏈表是否空的函數(shù) 
int link_empty(link *); 
//判斷鏈表是否滿(mǎn)的函數(shù) 
int link_full(link *); 
//統(tǒng)計(jì)有效數(shù)字個(gè)數(shù)的函數(shù) 
int link_size(link *); 
//在最前邊插入數(shù)字的函數(shù) 
int link_add_head(link *, int ); 
//在最后邊插入新的數(shù)字的函數(shù) 
int link_append(link *, int ); 
//把數(shù)字按照順序插入到鏈表的函數(shù) 
int link_insert(link *, int); 
//刪除最前面數(shù)字的函數(shù) 
int link_remove_head(link *); 
//刪除最后一個(gè)有效數(shù)字 
int link_remove_tail(link *); 
//刪除某個(gè)給定數(shù)字的函數(shù) 
int link_remove(link *, int ); 
//獲得第一個(gè)有效數(shù)字的函數(shù) 
int link_get_head(link *, int *); 
//獲得最后一個(gè)有效數(shù)字的函數(shù) 
int link_get_tail(link *, int *); 
//獲得指定編號(hào)數(shù)字的函數(shù) 
int link_get(link *, int *, int ); 
 
#endif 

實(shí)現(xiàn)代碼: link_0505.cpp

/* 
鏈表演示 
*/ 
#include "stdlib.h" 
#include "link_0505.h" 
//鏈表的初始化函數(shù) 
void link_init(link *p_link) 
{ 
  p_link->head.p_next = &(p_link->tail); 
} 
//鏈表的清理函數(shù) 
void link_deinit(link *p_link) 
{ 
  while(p_link->head.p_next != &(p_link->tail)) 
  { 
    node *p_first = &(p_link->head); 
    node *p_mid = p_first->p_next; 
    node *p_last = p_mid->p_next; 
    p_first->p_next = p_last; 
    free(p_mid); 
    p_mid = NULL; 
  } 
} 
//判斷鏈表是否空的函數(shù) 
int link_empty(link *p_link) 
{ 
  return p_link->head.p_next == &(p_link->tail); 
} 
//判斷鏈表是否滿(mǎn)的函數(shù) 
int link_full(link *p_link) 
{ 
  return 0; 
} 
//統(tǒng)計(jì)有效數(shù)字個(gè)數(shù)的函數(shù) 
int link_size(link *p_link) 
{ 
  int cnt = 0; 
  node *p_node = NULL; 
  for (p_node = &(p_link->head);p_node != &(p_link->tail);p_node = p_node->p_next) 
  { 
    node *p_first = p_node; 
    node *p_mid = p_first->p_next; 
    node *p_last = p_mid->p_next; 
    if (p_mid != &(p_link->tail)) 
    { 
      cnt++; 
    } 
  } 
  return cnt; 
} 
//在最前邊插入數(shù)字的函數(shù) 
int link_add_head(link *p_link, int num) 
{ 
  node *p_temp = (node *)malloc(sizeof(node)); 
  if (!p_temp) 
  { 
    return 0; 
  }   
 
  p_temp->num = num; 
  node *p_first = &(p_link->head); 
  node *p_mid = p_first->p_next; 
  node *p_last = p_mid->p_next; 
  p_first->p_next = p_temp; 
  p_temp->p_next = p_mid; 
 
  return 1; 
} 
//在最后邊插入新的數(shù)字的函數(shù) 
int link_append(link *p_link, int num) 
{ 
  node *p_tmp = (node *)malloc(sizeof(node)); 
  node *p_node = NULL; 
  if (!p_tmp) 
  { 
    return 0; 
  } 
  p_tmp->num = num; 
  for (p_node = &(p_link->head);p_node != &(p_link->tail);p_node = p_node->p_next) 
  { 
    node *p_first = p_node; 
    node *p_mid = p_first->p_next; 
    node *p_last = p_mid->p_next; 
    if (p_mid == &(p_link->tail)) 
    { 
      p_first->p_next = p_tmp; 
      p_tmp->p_next = p_mid; 
      break; 
    } 
  } 
  return 1; 
} 
//把數(shù)字按照順序插入到鏈表的函數(shù) 
int link_insert(link *p_link, int num) 
{ 
  node* p_temp = (node *)malloc(sizeof(node)); 
  node* p_node = NULL; 
  if (!p_temp) 
  { 
    return 0; 
  } 
  p_temp->num = num; 
  p_temp->p_next = NULL; 
  for (p_node = &(p_link->head);p_node != &(p_link->tail);p_node = p_node->p_next) 
  { 
    node *p_first = p_node; 
    node *p_mid = p_first->p_next; 
    node *p_last = p_mid->p_next; 
    if (p_mid == &(p_link->tail) || p_mid->num > p_temp->num) 
    { 
      p_first->p_next = p_temp; 
      p_temp->p_next = p_mid; 
      break; 
    } 
  } 
  return 0; 
} 
//刪除最前面數(shù)字的函數(shù) 
int link_remove_head(link *p_link) 
{ 
  node *p_first = &(p_link->head); 
  node *p_mid = p_first->p_next; 
  node *p_last = p_mid->p_next; 
  if (p_link->head.p_next == &(p_link->tail)) 
  { 
    return 0; 
  } 
  p_first->p_next = p_last; 
  free(p_mid); 
  p_mid = NULL; 
} 
//刪除最后一個(gè)有效數(shù)字 
int link_remove_tail(link *p_link) 
{ 
  node *p_node = NULL; 
  for (p_node = &(p_link->head);p_node !=&(p_link->tail);p_node = p_node->p_next) 
  { 
    node *p_first = p_node; 
    node *p_mid = p_first->p_next; 
    node *p_last = p_mid->p_next; 
    if (p_last == &(p_link->tail)) 
    { 
      p_first->p_next = p_last; 
      free(p_mid); 
      p_mid = NULL; 
      return 1; 
    } 
  } 
  return 0; 
} 
//刪除某個(gè)給定數(shù)字的函數(shù) 
int link_remove(link *p_link, int num) 
{ 
  node *p_node = NULL; 
  for (p_node = &(p_link->head);p_node != &(p_link->tail);p_node = p_node->p_next) 
  { 
    node *p_first = p_node; 
    node *p_mid = p_first->p_next; 
    node *p_last = p_mid->p_next; 
    if (p_mid != &(p_link->tail) && p_mid->num == num) 
    { 
      p_first->p_next = p_last; 
      free(p_mid); 
      p_mid = NULL; 
      return 1; 
    } 
  } 
  return 0; 
} 
//獲得第一個(gè)有效數(shù)字的函數(shù) 
int link_get_head(link *p_link, int *p_num) 
{ 
  if (p_link->head.p_next == &(p_link->tail)) 
  { 
    return 0; 
  } 
  node *p_first = &(p_link->head); 
  node *p_mid = p_first->p_next; 
  node *p_last = p_mid->p_next; 
  p_first->p_next = p_last; 
  *p_num = p_mid->num; 
  return 1; 
} 
//獲得最后一個(gè)有效數(shù)字的函數(shù) 
int link_get_tail(link *p_link, int *p_num) 
{ 
  node *p_node = NULL; 
  for (p_node = &(p_link->head);p_node != &(p_link->tail);p_node = p_node->p_next) 
  { 
    node *p_first = p_node; 
    node *p_mid = p_first->p_next; 
    node *p_last = p_mid->p_next; 
    if (p_last == &(p_link->tail)) 
    { 
      *p_num = p_mid->num; 
      return 1; 
    } 
  } 
  return 0; 
} 
//獲得指定編號(hào)數(shù)字的函數(shù) 
int link_get(link *p_link, int *p_num, int num) 
{ 
  int cnt = 0; 
  node *p_node = NULL; 
  for (p_node = &(p_link->head);p_node != &(p_link->tail);p_node = p_node->p_next) 
  { 
    node *p_first = p_node; 
    node *p_mid = p_first->p_next; 
    node *p_last = p_mid->p_next; 
    if (p_mid != &(p_link->tail) && cnt == num) 
    { 
      *p_num = p_mid->num; 
      return 1; 
    } 
    cnt++; 
  } 
  return 0; 
} 

測(cè)試函數(shù):

/* 
 * 鏈表測(cè)試 
 * */ 
#include <stdio.h> 
#include "link_0505.h" 
int main() { 
  int size = 0, num = 0, val = 0; 
  link lnk = {0}; 
  link_init(&lnk); 
  link_add_head(&lnk, 30); 
  link_add_head(&lnk, 20); 
  link_append(&lnk, 90); 
  link_append(&lnk, 100); 
  link_insert(&lnk, 50); 
  link_insert(&lnk, 60); 
  link_insert(&lnk, 40); 
  link_insert(&lnk, 80); 
  link_insert(&lnk, 70); 
  size = link_size(&lnk); 
  for (num = 0;num <= size - 1;num++) { 
    link_get(&lnk, &val, num); 
    printf("%d ", val); 
  } 
  printf("\n"); 
  printf("------------------"); 
  link_remove_head(&lnk); 
  link_remove_tail(&lnk); 
  link_remove(&lnk, 70); 
  size = link_size(&lnk); 
  for (num = 0;num <= size - 1;num++) { 
    link_get(&lnk, &val, num); 
    printf("%d ", val); 
  } 
  printf("\n"); 
  link_get_head(&lnk, &val); 
  printf("最前面的數(shù)字是%d\n", val); 
  link_get_tail(&lnk, &val); 
  printf("最后面的數(shù)字是%d\n", val); 
  link_deinit(&lnk); 
  return 0; 
} 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語(yǔ)言聯(lián)合體的實(shí)現(xiàn)示例

    C語(yǔ)言聯(lián)合體的實(shí)現(xiàn)示例

    C語(yǔ)言聯(lián)合體是一種特殊的數(shù)據(jù)結(jié)構(gòu),它允許在相同的內(nèi)存位置存儲(chǔ)不同的數(shù)據(jù)類(lèi)型,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • 舉例剖析C++中引用的本質(zhì)及引用作函數(shù)參數(shù)的使用

    舉例剖析C++中引用的本質(zhì)及引用作函數(shù)參數(shù)的使用

    這篇文章主要介紹了C++中引用的本質(zhì)及引用作函數(shù)參數(shù)的使用,講解了函數(shù)返回值是引用的情況等一些難點(diǎn),需要的朋友可以參考下
    2016-03-03
  • QT quick-Popup彈出窗口自定義的實(shí)現(xiàn)

    QT quick-Popup彈出窗口自定義的實(shí)現(xiàn)

    本文主要介紹了QT quick-Popup彈出窗口自定義的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • 詳解C++ 編寫(xiě)String 的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù)

    詳解C++ 編寫(xiě)String 的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù)

    這篇文章主要介紹了詳解C++ 編寫(xiě)String 的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù)的相關(guān)資料,這里提供實(shí)例幫助大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • Qt使用QListWidget實(shí)現(xiàn)自定義Item

    Qt使用QListWidget實(shí)現(xiàn)自定義Item

    這篇文章主要為大家詳細(xì)介紹了Qt如何使用QListWidget實(shí)現(xiàn)自定義Item的效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • C指針原理教程之Ncurses介紹

    C指針原理教程之Ncurses介紹

    Ncurses 提供字符終端處理庫(kù),包括面板和菜單。為了能夠使用ncurses庫(kù),您必須在您的源程序中將curses.h包括(include)進(jìn)來(lái),而且在編譯的需要與它連接起來(lái). 在gcc中您可以使用參數(shù)-lcurses進(jìn)行編譯.
    2019-02-02
  • C/C++中時(shí)間庫(kù)函數(shù)的使用詳解

    C/C++中時(shí)間庫(kù)函數(shù)的使用詳解

    這篇文章主要為大家詳細(xì)介紹了C/C++中的時(shí)間相關(guān)知識(shí)總結(jié),例如時(shí)間庫(kù)函數(shù)的使用以及獲取本地時(shí)間的不同方法,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-11-11
  • C++ OpenCV繪制簡(jiǎn)易直方圖DrawHistImg

    C++ OpenCV繪制簡(jiǎn)易直方圖DrawHistImg

    本文主要介紹了一個(gè)能繪制簡(jiǎn)易直方圖的簡(jiǎn)單函數(shù)DrawHistImg,可以幫助大家快速掌握繪制的原理,可以根據(jù)自己的創(chuàng)意對(duì)其進(jìn)行改善和補(bǔ)充。需要的朋友可以參考一下
    2021-12-12
  • 詳解C++的靜態(tài)內(nèi)存分配與動(dòng)態(tài)內(nèi)存分配

    詳解C++的靜態(tài)內(nèi)存分配與動(dòng)態(tài)內(nèi)存分配

    內(nèi)存分配 (Memory Allocation) 是指為計(jì)算機(jī)程序或服務(wù)分配物理內(nèi)存空間或虛擬內(nèi)存空間的一個(gè)過(guò)程,本文主要介紹了C++的靜態(tài)內(nèi)存分配與動(dòng)態(tài)內(nèi)存分配,感興趣的同學(xué)可以參考閱讀
    2023-06-06
  • C語(yǔ)言實(shí)現(xiàn)堆排序的簡(jiǎn)單實(shí)例

    C語(yǔ)言實(shí)現(xiàn)堆排序的簡(jiǎn)單實(shí)例

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)堆排序的簡(jiǎn)單實(shí)例,講述了堆排序的原理,需要的朋友可以參考下
    2014-07-07

最新評(píng)論

都兰县| 贺兰县| 句容市| 邮箱| 耒阳市| 体育| 额尔古纳市| 大悟县| 鞍山市| 上饶县| 浠水县| 通城县| 商河县| 息烽县| 涪陵区| 信阳市| 中方县| 平度市| 公主岭市| 溧水县| 和龙市| 姜堰市| 时尚| 古蔺县| 汕头市| 兖州市| 偏关县| 武威市| 巴楚县| 佛冈县| 获嘉县| 利津县| 文安县| 克东县| 天峻县| 婺源县| 花莲市| 淮阳县| 会宁县| 珠海市| 宣化县|