亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

c語言鏈表基本操作(帶有創建鏈表 刪除 打印 插入)

2020-01-26 15:39:50
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LEN sizeof(struct Student)
struct Student
{
    long num;
    float score;
    struct Student*next;
};
int n;
int main()
{
    /*-----------------------------程序描述--------------------------------------------
        題目:寫出一個主函數,分別調用建立鏈表的函數create(),輸出鏈表的函數print(),
              刪除鏈表結點的函數del(),插入結點的函數insert(),一共5個函數。
        Author:KillerLegend
        Date:  2013.12.6
    ----------------------------------------------------------------------------------*/
//函數聲明
    struct Student* create();//創建動態鏈表的函數聲明,函數類型為student結構體類型,返回頭指針
    struct Student* del(struct  Student* ,long);//刪除指定位置結點的函數聲明,參數:鏈表頭結點+刪除結點位置+返回頭指針
    struct Student* insert(struct Student*,struct Student*);//插入一個Student類型數據的函數聲明
    void   print(struct Student*);//輸出鏈表中數據的函數聲明,參數為鏈表的頭指針
//定義變量
    struct Student *head,*stu;//定義動態鏈表的頭指針與新的結點
    long del_num;
//建立鏈表操作
    printf("Input records:/n");
    head = create();//建立鏈表并返回頭指針
    print(head);//輸出全部結點

//刪除結點操作
    printf("/nInput the deleted number:");
    scanf("%ld",&del_num);
    while(del_num!=0)//當輸入學號為0時結束循環
    {
        head = del(head,del_num);//刪除結點后返回鏈表的頭地址
        print(head);//輸出全部結點
        printf("Input the deleted number:");
        scanf("%ld",&del_num);
    }
//插入結點操作
    printf("/nInput the inserted number:");
    stu=(struct Student*)malloc(LEN);//每插入一個結點需要開辟一個新的結點
    scanf("%ld %f",&stu->num,&stu->score);
    while(stu->num!=0)//當輸入的學號為0時結束循環
    {
        head = insert(head,stu);//返回鏈表的頭地址
        print(head);
        printf("/nInput the inserted number:");
        stu = (struct Student*)malloc(LEN);
        scanf("%ld %f",&stu->num,&stu->score);
    }
    return 0;
}
//建立鏈表的函數
struct  Student* create()
{
    struct Student *head;
    struct Student *p1,*p2;
    n=0;
    p1=p2=(struct Student *)malloc(LEN);
    scanf("%ld %f",&p1->num,&p1->score);
    head=NULL;
    while(p1->num!=0)
    {
        n++;
        if(n==1)head=p1;
        else p2->next=p1;//第一次執行時,這一步是將頭指針指向自身,當n從2起,這一步用于使p2指向下一個元素
        p2=p1;//使p2和p1指向同一個存儲區
        p1=(struct Student*)malloc(LEN);//開辟動態存儲區,強制返回struct Student類型的指針
        scanf("%ld %f",&p1->num,&p1->score);
    }
    p2->next=NULL;
    return (head);
}

//刪除結點的函數
struct Student* del(struct  Student* head,long num)
{
    struct Student *p1,*p2;
    if(head==NULL)
    {
        printf("List null!/n");
        return (head);
    }
    p1=head;
    while(num!=p1->num && p1->next!=NULL)
    {
        p2=p1;
        p1=p1->next;
    }
    if(num==p1->num)
    {
        if(p1==head)
        {
            head=p1->next;
        }
        else
        {
            p2->next=p1->next;
        }
        printf("Delete:%ld/n",num);
        n=n-1;
    }
    else
    {
        printf("%ld not been found!",num);
    }
    return (head);
}

//插入結點的函數
struct   Student* insert(struct Student* head,struct Student * stud)
{
    struct Student *p0,*p1,*p2;
    p1=head;
    p0=stud;
    if(head==NULL)//原來的鏈表是空表
    {
        head=p0;p0->next=NULL;//空表時使插入的結點作為頭結點
    }
    else//如果不是空表,則遍歷尋找合適的插入位置
    {
        while((p0->num>p1->num)&&(p1->next!=NULL))//按學號順序插入,如果插入的學號數字比較大,則應該向后推移
        {
            p2=p1;
            p1=p1->next;//后移
        }
    }
    if(p0->num<=p1->num)//找到插入的位置,插入的位置是p1所指向的位置之前,也就是p2指向的位置
    {
        if(head==p1)head=p0;//如果插入的位置是頭位置之前,則使head指向p0
        else p2->next=p0;//如果不是頭位置之前,則使p2的next指針指向插入的數據地址即p0
        p0->next=p1;//使p0的next指針指向p1,完成了數據的加入
    }
    else//插入的學號位置在最后一個
    {
        p1->next=p0;
        p0->next=NULL;
    }
    n=n+1;//記錄數加一
    return(head);
}
//輸出鏈表的函數
void print(struct Student * head)
{
    struct Student * p;
    printf("Now,These %d records are:/n",n);
    p=head;
    if(head!=NULL)
    do
    {
        printf("%ld %5.1f/n",p->num,p->score);
        p=p->next;
    }while(p!=NULL);
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情一区二区三区在线视频观看| 亚洲第一精品夜夜躁人人躁| 亚洲欧洲黄色网| www.xxxx欧美| 青青久久av北条麻妃黑人| 日韩欧美精品在线观看| 国产精品久久久久福利| 九九热精品视频国产| 日韩av一区在线观看| 久久九九国产精品怡红院| 国产三级精品网站| 亚洲欧洲高清在线| 欧美巨猛xxxx猛交黑人97人| 欧美激情性做爰免费视频| 都市激情亚洲色图| 国产亚洲精品久久久久动| 国产精品久久久久久久久久小说| 91在线视频一区| 久久免费视频在线观看| 亚洲欧美成人精品| 中文字幕欧美精品在线| 成人免费在线视频网站| 亚洲免费电影在线观看| 搡老女人一区二区三区视频tv| 亚洲图片欧美日产| 亚洲国产精品va| 欧美高清理论片| 国产美女搞久久| 久久色在线播放| 国产欧美日韩综合精品| 日韩精品中文字幕在线播放| 高清在线视频日韩欧美| 国产视频精品免费播放| 欧美激情精品久久久久久久变态| 国产日本欧美一区二区三区| 欧洲s码亚洲m码精品一区| 91亚洲精品在线观看| 精品福利樱桃av导航| 日本欧美中文字幕| 欧美成人午夜激情| 日韩av大片免费看| 亚洲一区免费网站| 日韩小视频网址| 亚洲一区二区三区久久| 亚洲电影免费观看高清完整版在线| 亚洲成人激情在线观看| 国产亚洲精品久久久久久| 色www亚洲国产张柏芝| 韩国精品美女www爽爽爽视频| 亚洲欧洲日产国码av系列天堂| 亚洲国产欧美日韩精品| 中文字幕亚洲一区二区三区五十路| 91成人精品网站| 日韩精品免费在线播放| 狠狠躁夜夜躁久久躁别揉| 日韩av免费在线播放| 曰本色欧美视频在线| 日韩中文字幕在线视频| 久久综合网hezyo| 欧美日韩激情视频8区| 欧美大片在线看免费观看| 欧美成人免费在线视频| 国产精品99久久久久久久久| 国产婷婷成人久久av免费高清| 国产精品视频精品视频| 欧美日韩人人澡狠狠躁视频| 中文字幕一区二区三区电影| 亚洲国产小视频在线观看| 日韩精品免费一线在线观看| 欧美激情xxxxx| 亚洲色图国产精品| 国产日产久久高清欧美一区| 久久久久在线观看| 欧美精品激情在线| 中文字幕国产精品久久| 日韩av成人在线观看| 欧美专区中文字幕| 中文字幕亚洲一区在线观看| 青草热久免费精品视频| 大伊人狠狠躁夜夜躁av一区| 日韩中文字幕欧美| 亚洲天堂久久av| 亚洲成人精品视频在线观看| 亚洲色图在线观看| 国产成人精品一区| 久久久久久中文字幕| 亚洲自拍偷拍福利| 综合网中文字幕| 亚洲一区av在线播放| 欧美精品免费在线观看| 国产精品男女猛烈高潮激情| 日韩av中文字幕在线免费观看| 最新91在线视频| 亚洲一区999| 国产精品日韩欧美综合| 久久天天躁狠狠躁夜夜躁2014| 中文字幕日韩有码| 亚洲色图欧美制服丝袜另类第一页| 亚洲激情中文字幕| 久久精品91久久久久久再现| 亚洲人成人99网站| 欧美电影在线免费观看网站| 成人久久久久爱| 国产精品久久久久久久久久99| 国产色婷婷国产综合在线理论片a| 亚洲激情视频在线观看| 在线播放国产一区中文字幕剧情欧美| 国产偷国产偷亚洲清高网站| 91极品女神在线| 亚洲人成电影在线| 欧美精品免费看| 日本欧美一二三区| 国产www精品| 欧美视频中文在线看| 国产成人精品在线视频| 欧美视频在线视频| 亚洲精品v天堂中文字幕| 91大神福利视频在线| 精品视频久久久久久| 日韩美女视频免费在线观看| 中文字幕亚洲第一| …久久精品99久久香蕉国产| 中文在线资源观看视频网站免费不卡| 浅井舞香一区二区| 亚洲成人精品视频在线观看| 久久免费视频网| 91在线观看免费| 成人激情视频小说免费下载| 日韩人在线观看| 久久激情视频免费观看| 中文字幕免费国产精品| 97视频在线观看免费| 日韩在线小视频| 欧美高清第一页| 成人精品一区二区三区| 国产亚洲精品美女久久久| 91在线视频成人| 亚洲影视九九影院在线观看| 亚洲精品456在线播放狼人| 国产成人一区二区| 国产日韩欧美在线视频观看| 日韩精品免费在线| 欧美日韩一区免费| 38少妇精品导航| 国产精品亚洲自拍| 精品视频在线导航| 欧美亚洲国产成人精品| 91精品国产综合久久香蕉922| 欧洲日本亚洲国产区| 欧美日韩在线另类| 8090理伦午夜在线电影| 国产精品视频久久| 欧美性色xo影院| 亚洲自拍偷拍色图| 97在线视频国产| 国产精品久久久久久久久久新婚| 欧美成人午夜剧场免费观看| 奇米4444一区二区三区| 色婷婷久久av| 91久热免费在线视频| 日韩av成人在线| 国产九九精品视频| 91久久精品美女高潮| 亚洲白拍色综合图区|