c語言鏈表操作示例分享
來源:本站原創(chuàng)|時間:2020-01-10|欄目: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("這是一個線性鏈表試驗程序。\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;/*掃描鏈表時要用到的臨時局部變量*/
ck * temp=NULL;/*插入新結(jié)點時要用到的臨時局部變量*/
int i=0;/*隔壁print函數(shù)依賴的一個參數(shù)*/
if(head==NULL){
head=(ck*)malloc(k);/*創(chuàng)建一個空的數(shù)據(jù)節(jié)點,第一個數(shù)據(jù)節(jié)點*/
if(head==NULL){
printf("malloc內(nèi)存錯誤!");
getch();
exit(1);
}/*檢驗剛剛是否已經(jīng)成功創(chuàng)建數(shù)據(jù)節(jié)點*/
printf("頭結(jié)點已成功創(chuàng)建,其地址為%p。\n",head);
head->next=NULL;
head->c='0'; /*初始化頭結(jié)點*/
}
do{/*以從HEAD結(jié)點之后處插入新數(shù)據(jù)節(jié)點的方式接收錄入的數(shù)據(jù)*/
printf("是否要錄入新數(shù)據(jù)?若錄入,請按y/Y;按其他鍵結(jié)束錄入。\n");
if(getch()!='y' && getch()!='Y'){
printf("錄入結(jié)束。\n");
getch();
break;
}
temp=head->next;/*儲存頭節(jié)點指針域的數(shù)據(jù)*/
head->next=(ck*)malloc(k);/*創(chuàng)建一個新節(jié)點*/
if(head->next==NULL){
printf("malloc內(nèi)存錯誤!");
getch();
exit(1);
}/*檢驗剛剛是否已經(jīng)成功創(chuàng)建數(shù)據(jù)節(jié)點*/
next=head->next;/*掃描到新創(chuàng)建的節(jié)點*/
next->next=temp;/*給新節(jié)點的指針域賦值*/
printf("請錄入新數(shù)據(jù)……\n");
next->c=getch();/*給新節(jié)點的數(shù)據(jù)域賦值*/
if(next->c==-1){
printf("系統(tǒng)錄入端錯誤!");
getch();
exit(1);
}
printf("新數(shù)據(jù)錄入成功。錄入的新數(shù)據(jù)為%c,其數(shù)據(jù)節(jié)點的地址為%p。\n",next->c,next);/*反饋*/
}while(1);/*以從HEAD結(jié)點之后處插入新數(shù)據(jù)節(jié)點的方式接收錄入的數(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 序號 數(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;
}
上一篇:隊列的動態(tài)鏈式存儲實現(xiàn)代碼分享
欄 目:C語言
本文標題:c語言鏈表操作示例分享
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3752.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對數(shù)怎么表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實例總結(jié)
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什