国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C > 正文

c語(yǔ)言鏈表操作示例分享

2020-01-26 15:34:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

復(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é)束,請(qǐng)按y/Y;按其他鍵繼續(xù)錄入。/n");
        if(getch()=='y' && getch()=='Y'){
            printf("程序結(jié)束。/n");
            getch();
            break;
            }       
        }while(1);
    return 0;
    }
/*以下是為了演示線性鏈表而試著編寫(xiě)的程序模塊*/
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ù)?若錄入,請(qǐng)按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("請(qǐng)錄入新數(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)在沒(méi)有數(shù)據(jù)。/n");
        getch();   
    }
    else{
        printf("是否要顯示鏈表中所有的數(shù)據(jù)及其地址?若要顯示,請(qǐng)按y/Y;按其他鍵跳過(guò)。/n");
        if(getch()!='y' && getch()!='Y'){
            printf("跳過(guò)。/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;
    }

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 天长市| 西充县| 建宁县| 纳雍县| 斗六市| 常州市| 乾安县| 新绛县| 旺苍县| 宜城市| 康平县| 龙州县| 天气| 河北区| 依安县| 富平县| 阳山县| 云龙县| 攀枝花市| 百色市| 北碚区| 沾益县| 澄江县| 上杭县| 克什克腾旗| 利津县| 怀化市| 阜平县| 襄汾县| 大洼县| 中宁县| 元江| 开江县| 云龙县| 峨边| 于都县| 无棣县| 德安县| 大姚县| 乳山市| 丹寨县|