欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c語言鏈表操作示例分享

 更新時(shí)間:2014年03月06日 10:17:20   作者:  
這篇文章主要介紹了c語言鏈表操作示例,代碼中有注釋,需要的朋友可以參考下

復(fù)制代碼 代碼如下:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
/*以下是為了構(gòu)建線性鏈表而定義的結(jié)構(gòu)體*/
typedef struct chaink{
    char c;
    struct chaink * next;
    }ck;
ck * chain(ck *,int);
int print(ck *,int);
/*以下是main函數(shù)*/
int main(void){
    printf("這是一個(gè)線性鏈表試驗(yàn)程序。\n");
    ck * head=NULL;
    int k;
    k=sizeof(ck);
    do{
        head=chain(head,k);
        printf("是否要結(jié)束程序?若結(jié)束,請按y/Y;按其他鍵繼續(xù)錄入。\n");
        if(getch()=='y' && getch()=='Y'){
            printf("程序結(jié)束。\n");
            getch();
            break;
            }       
        }while(1);
    return 0;
    }
/*以下是為了演示線性鏈表而試著編寫的程序模塊*/
ck * chain(ck * head,int k){
    ck * next=NULL;/*掃描鏈表時(shí)要用到的臨時(shí)局部變量*/
    ck * temp=NULL;/*插入新結(jié)點(diǎn)時(shí)要用到的臨時(shí)局部變量*/
    int i=0;/*隔壁print函數(shù)依賴的一個(gè)參數(shù)*/
    if(head==NULL){
        head=(ck*)malloc(k);/*創(chuàng)建一個(gè)空的數(shù)據(jù)節(jié)點(diǎn),第一個(gè)數(shù)據(jù)節(jié)點(diǎn)*/
        if(head==NULL){
            printf("malloc內(nèi)存錯(cuò)誤!");
            getch();
            exit(1);
            }/*檢驗(yàn)剛剛是否已經(jīng)成功創(chuàng)建數(shù)據(jù)節(jié)點(diǎn)*/
        printf("頭結(jié)點(diǎn)已成功創(chuàng)建,其地址為%p。\n",head);
        head->next=NULL;
        head->c='0'; /*初始化頭結(jié)點(diǎn)*/
        }   
    do{/*以從HEAD結(jié)點(diǎn)之后處插入新數(shù)據(jù)節(jié)點(diǎn)的方式接收錄入的數(shù)據(jù)*/
        printf("是否要錄入新數(shù)據(jù)?若錄入,請按y/Y;按其他鍵結(jié)束錄入。\n");
        if(getch()!='y' && getch()!='Y'){
            printf("錄入結(jié)束。\n");
            getch();
            break;
            }            
        temp=head->next;/*儲(chǔ)存頭節(jié)點(diǎn)指針域的數(shù)據(jù)*/
        head->next=(ck*)malloc(k);/*創(chuàng)建一個(gè)新節(jié)點(diǎn)*/
        if(head->next==NULL){
            printf("malloc內(nèi)存錯(cuò)誤!");
            getch();
            exit(1);
            }/*檢驗(yàn)剛剛是否已經(jīng)成功創(chuàng)建數(shù)據(jù)節(jié)點(diǎn)*/
        next=head->next;/*掃描到新創(chuàng)建的節(jié)點(diǎn)*/
        next->next=temp;/*給新節(jié)點(diǎn)的指針域賦值*/
        printf("請錄入新數(shù)據(jù)……\n");
        next->c=getch();/*給新節(jié)點(diǎn)的數(shù)據(jù)域賦值*/
        if(next->c==-1){
            printf("系統(tǒng)錄入端錯(cuò)誤!");
            getch();
            exit(1);
            }
        printf("新數(shù)據(jù)錄入成功。錄入的新數(shù)據(jù)為%c,其數(shù)據(jù)節(jié)點(diǎn)的地址為%p。\n",next->c,next);/*反饋*/
    }while(1);/*以從HEAD結(jié)點(diǎn)之后處插入新數(shù)據(jù)節(jié)點(diǎn)的方式接收錄入的數(shù)據(jù)(結(jié)束)*/
    if(head->next==NULL){/*數(shù)據(jù)打印環(huán)節(jié)*/
        printf("數(shù)據(jù)鏈表里現(xiàn)在沒有數(shù)據(jù)。\n");
        getch();   
    }
    else{
        printf("是否要顯示鏈表中所有的數(shù)據(jù)及其地址?若要顯示,請按y/Y;按其他鍵跳過。\n");
        if(getch()!='y' && getch()!='Y'){
            printf("跳過。\n");
            getch();
            return head;
            }
        printf("現(xiàn)在輸出鏈表的內(nèi)容……\n 序號(hào) 數(shù)據(jù) 指針\n");
        for(next=head->next;next!=NULL;next=next->next){
            i=print(next,i);/*調(diào)用打印鏈表用的函數(shù)*/
            }
    }/*數(shù)據(jù)打印環(huán)節(jié)(結(jié)束)*/
    return head;   
    }
/*以下是打印鏈表用的函數(shù)*/
int print(ck * next,int i){
    printf("   %d    %c    %p\n",i,next->c,next);
    i++;
    return i;
    }

相關(guān)文章

  • 詳解C++中變量的初始化規(guī)則

    詳解C++中變量的初始化規(guī)則

    這篇文章詳細(xì)介紹了關(guān)于C++中變量的初始化規(guī)則,C++如果不對變量初始化,可能會(huì)導(dǎo)致很多后果,所以學(xué)習(xí)C++變量初始化規(guī)則就很重要了,下面一起來看看
    2016-08-08
  • C++11 Unicode編碼轉(zhuǎn)換

    C++11 Unicode編碼轉(zhuǎn)換

    這篇文章主要介紹了C++11 Unicode編碼轉(zhuǎn)換的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++11,感興趣的朋友可以了解下
    2020-08-08
  • 詳解C++11的std::addressof源碼解析

    詳解C++11的std::addressof源碼解析

    std::addressof的作用是獲取一個(gè)對象的實(shí)際地址,即使這個(gè)對象的&操作符已被重載,本文詳細(xì)的介紹了源碼解析,感興趣的可以了解一下
    2021-06-06
  • C語言實(shí)現(xiàn)簡單五子棋小游戲

    C語言實(shí)現(xiàn)簡單五子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C++中std::thread線程用法

    C++中std::thread線程用法

    本文主要介紹了C++中std::thread線程用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • C++11 并發(fā)指南之Lock 詳解

    C++11 并發(fā)指南之Lock 詳解

    這篇文章主要介紹了C++11 并發(fā)指南之Lock 詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • C++結(jié)構(gòu)體字節(jié)對齊示例

    C++結(jié)構(gòu)體字節(jié)對齊示例

    這篇文章主要為大家介紹了C++結(jié)構(gòu)體字節(jié)對齊示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 二叉樹先根(先序)遍歷的改進(jìn)

    二叉樹先根(先序)遍歷的改進(jìn)

    這篇文章主要介紹了二叉樹先根(先序)遍歷的改進(jìn),有需要的朋友可以參考一下
    2014-01-01
  • c++獲取進(jìn)程信息列表和進(jìn)程所調(diào)用的dll列表

    c++獲取進(jìn)程信息列表和進(jìn)程所調(diào)用的dll列表

    這篇文章主要介紹了c++獲取進(jìn)程信息列表和進(jìn)程所調(diào)用的dll列表,大家參考使用吧
    2013-11-11
  • C語言實(shí)現(xiàn)BMP圖像細(xì)化處理

    C語言實(shí)現(xiàn)BMP圖像細(xì)化處理

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)BMP圖像細(xì)化處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評(píng)論