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

首頁 > 學院 > 開發(fā)設計 > 正文

鏈表的運算(02)

2019-11-17 05:34:19
字體:
來源:轉載
供稿:網友
3.鏈表節(jié)點的插入
4.鏈表節(jié)點的刪除



3.鏈表節(jié)點的插入
解:
    1) 首先聲明一個新節(jié)點供輸入要插入節(jié)點的內容
    2) 由用戶輸入一個節(jié)點內容(Key),表示欲插入在哪一個節(jié)點之后
    3) 持續(xù)往下一個節(jié)點,直到節(jié)點內容Key或節(jié)點指針為NULL為止(即找不到該節(jié)點)
    4) 假如該節(jié)點不存在,則插入在節(jié)點前
        New->Next=Head
        Head=New
    5) 假如找到該節(jié)點,則
        New->Next=Pointer->Next
        Pointer->Next=New
*程序代碼如下:
#include<stdlib.h>
#include<stdio.h>
#define Max 10
strUCt List            /*節(jié)點結構聲明*/
{
    int Number;
    int Total;
    struct List *Next;
};
typedef struct List Node;
typedef Node *Link;
int Data[2][Max]={1,3,5,7,2,4,6,8,9,0,15,35,10,67,25,65,38,70,30,20};
/*插入節(jié)點至鏈表內*/
Link Insert_List(Link Head,Link New,int Key)
{
    Link Pointer;        /*聲明節(jié)點*/
    Pointer=Head;        /*Pointer指針設為首節(jié)點*/
    while(1)
    {
        if(Pointer==NULL)    /*插入在首節(jié)點前*/
        {
            New->Next=Head;
            Head=New;
            break;
        }
        if(Pointer->Number==Key)    /*插入在鏈表中間或尾端*/
        {
            New->Next=Pointer->Next;
            Pointer->Next=New;
            break;
        }
        Pointer=Pointer->Next;    /*指向下一個節(jié)點*/
    }
    return Head;
}
/*輸出鏈表數據*/
void PRint_List(Link Head)
{
    Link Pointer;        /*節(jié)點聲明*/
    Pointer=Head;        /*Pointer指針設為首節(jié)點*/
    while(Pointer!=NULL)    /*當節(jié)點為NULL結束循環(huán)*/
    {
        printf("[%d,%d]",Pointer->Number,Pointer->Total);
        Pointer=Pointer->Next;    /*指向下一個節(jié)點*/
    }
    printf("/n");
}
/*釋放鏈表*/
void Free_List(Link Head)
{
    Link Pointer;        /*節(jié)點聲明*/
    while(Head!=NULL)    /*當節(jié)點為NULL結束循環(huán)*/
    {
        Pointer=Head;
        Head=Head->Next;
        free(Pointer);
    }
}
/*建立鏈表*/
Link Create_List(Link Head)
{
    Link New;        /*節(jié)點聲明*/
    Link Pointer;    /*節(jié)點聲明*/
    int i;
    Head=(Link)malloc(sizeof(Node));    /*分配內存*/
    if(Head==NULL)
        printf("Memory allocate Failure!/n");    /*內存分配失敗*/
    else
    {
        Head->Number=Data[0][0];        /*定義首節(jié)點數據編號*/
        Head->Total=Data[1][0];
        Head->Next=NULL;
        Pointer=Head;        /*Pointer指針設為首節(jié)點*/
        for(i=1;i<Max;i++)
        {
            New=(Link)malloc(sizeof(Node));    /*分配內存*/
            New->Number=Data[0][i];
            New->Total=Data[1][i];
            New->Next=NULL;
            Pointer->Next=New;        /*將新節(jié)點串連在原列表尾端*/
            Pointer=New;            /*列表尾端節(jié)點為新節(jié)點*/
        }
    }
    return Head;
}
/*主程序*/
void main()
{
    Link Head;        /*節(jié)點聲明*/
    Link New;
    int Key;
    Head=Create_List(Head);    /*建立鏈表*/
    if(Head!=NULL)
    {
        Print_List(Head);    
        while(1)
        {
            printf("Input 0 to Exit/n");    /*數據輸入提示*/
            New=(Link)malloc(sizeof(Node));    /*分配內存*/
            printf("Please input Data number:");
            scanf("%d",&New->Number);
            if(New->Number==0)        /*輸入0時結束循環(huán)*/
                break;
            printf("Please input the data total:");
            scanf("%d",&New->Total);
            printf("Please input the data number for Insert:");
            scanf("%d",&Key);
            Head=Insert_List(Head,New,Key);    /*插入節(jié)點*/
            Print_List(Head);                /*輸出鏈表數據*/
        }
        Free_List(Head);        /*釋放鏈表*/
    }
}
*程序運行結果如下:

[1] 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 惠水县| 遵化市| 集贤县| 白山市| 濉溪县| 崇阳县| 汕尾市| 淳化县| 巴林右旗| 黄冈市| 杭州市| 望谟县| 乡城县| 塔城市| 修水县| 云和县| 武夷山市| 凤翔县| 莎车县| 秭归县| 肥城市| 鹤岗市| 新昌县| 澜沧| 日喀则市| 岱山县| 汽车| 西昌市| 襄樊市| 潞西市| 咸阳市| 德令哈市| 武邑县| 金昌市| 奉化市| 图木舒克市| 年辖:市辖区| 海阳市| 安岳县| 留坝县| 库伦旗|