程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> c說話鏈表操作示例分享

c說話鏈表操作示例分享

編輯:關於C++

c說話鏈表操作示例分享。本站提示廣大學習愛好者:(c說話鏈表操作示例分享)文章只能為提供參考,不一定能成為您想要的結果。以下是c說話鏈表操作示例分享正文



#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
/*以下是為了構建線性鏈表而界說的構造體*/
typedef struct chaink{
    char c;
    struct chaink * next;
    }ck;
ck * chain(ck *,int);
int print(ck *,int);
/*以下是main函數*/
int main(void){
    printf("這是一個線性鏈表實驗法式。\n");
    ck * head=NULL;
    int k;
    k=sizeof(ck);
    do{
        head=chain(head,k);
        printf("能否要停止法式?若停止,請按y/Y;按其他鍵持續錄入。\n");
        if(getch()=='y' && getch()=='Y'){
            printf("法式停止。\n");
            getch();
            break;
            }       
        }while(1);
    return 0;
    }
/*以下是為了演示線性鏈表而試著編寫的法式模塊*/
ck * chain(ck * head,int k){
    ck * next=NULL;/*掃描鏈表時要用到的暫時部分變量*/
    ck * temp=NULL;/*拔出新結點時要用到的暫時部分變量*/
    int i=0;/*近鄰print函數依附的一個參數*/
    if(head==NULL){
        head=(ck*)malloc(k);/*創立一個空的數據節點,第一個數據節點*/
        if(head==NULL){
            printf("malloc內存毛病!");
            getch();
            exit(1);
            }/*磨練方才能否曾經勝利創立數據節點*/
        printf("頭結點已勝利創立,其地址為%p。\n",head);
        head->next=NULL;
        head->c='0'; /*初始化頭結點*/
        }   
    do{/*以從HEAD結點以後處拔出新數據節點的方法吸收錄入的數據*/
        printf("能否要錄入新數據?若錄入,請按y/Y;按其他鍵停止錄入。\n");
        if(getch()!='y' && getch()!='Y'){
            printf("錄入停止。\n");
            getch();
            break;
            }            
        temp=head->next;/*貯存頭節點指針域的數據*/
        head->next=(ck*)malloc(k);/*創立一個新節點*/
        if(head->next==NULL){
            printf("malloc內存毛病!");
            getch();
            exit(1);
            }/*磨練方才能否曾經勝利創立數據節點*/
        next=head->next;/*掃描到新創立的節點*/
        next->next=temp;/*給新節點的指針域賦值*/
        printf("請錄入新數據……\n");
        next->c=getch();/*給新節點的數據域賦值*/
        if(next->c==-1){
            printf("體系錄入端毛病!");
            getch();
            exit(1);
            }
        printf("新數據錄入勝利。錄入的新數據為%c,其數據節點的地址為%p。\n",next->c,next);/*反應*/
    }while(1);/*以從HEAD結點以後處拔出新數據節點的方法吸收錄入的數據(停止)*/
    if(head->next==NULL){/*數據打印環節*/
        printf("數據鏈內外如今沒稀有據。\n");
        getch();   
    }
    else{
        printf("能否要顯示鏈表中一切的數據及其地址?若要顯示,請按y/Y;按其他鍵跳過。\n");
        if(getch()!='y' && getch()!='Y'){
            printf("跳過。\n");
            getch();
            return head;
            }
        printf("如今輸入鏈表的內容……\n 序號 數據 指針\n");
        for(next=head->next;next!=NULL;next=next->next){
            i=print(next,i);/*挪用打印鏈表用的函數*/
            }
    }/*數據打印環節(停止)*/
    return head;   
    }
/*以下是打印鏈表用的函數*/
int print(ck * next,int i){
    printf("   %d    %c    %p\n",i,next->c,next);
    i++;
    return i;
    }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved