久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3615|回復: 0
打印 上一主題 下一主題
收起左側

C語言在鏈表中刪除結點

[復制鏈接]
跳轉到指定樓層
樓主
ID:73477 發表于 2015-2-10 17:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/****************************************************************
    該程序實現結點的刪除。
    其中void *del_node(TYM *head,int pos,int len)函數用于刪除結
點,head為需要刪除結點的鏈表、pos為結點的位置、len為需要刪除
的長度。
****************************************************************/

#include <stdio.h>
#include <stdlib.h>

typedef struct stu                                            //定義TYM類型
{
    char name[20];
    int num;
    struct stu *next;
}TYM;

void *del_node(TYM *head,int pos,int len)     //刪除結點指針函數
{
    int i;
    TYM *p,*q;
    if(pos==1)                                                   //如果刪除的位置是首地址
    {
        for(i=0;i<len;i++)                                    //刪除len個結點
        {
            p = head;                                          //使p指向head
            head = head->next;                          //使head指向下一個結點
            free(p);                                             //釋放p指向的結點
        }
    }
    else
    {
        for(p=head,i=1;i<pos-1;i++)                 //當pos不是首地址時,找到pos的位置
        {
            p = p->next;                                     //使p指向下一個結點,直到第pos個結點為止
        }
        for(i=0;i<len;i++)                                  //刪除len個結點
        {
            q = p->next;                                    //使q指向p的下一個結點
            p->next = q->next;                          //將q的下一個結點的地址傳給p的next
            free(q);                                          //釋放q指向的結點
        }
    }
    return head;                                          //返回首地址
}

void freeall(TYM *head)                            //釋放函數
{
    TYM *p;
    for(p=head;p!=NULL;)                          //釋放結點直到所有結點被釋放
    {
        p = head->next;                              //使p指向下一個結點
        free(head);                                     //釋放當前結點
        head = p;                                       //使head指向下一個結點
    }
    if(p==NULL)                                       //如果全部釋放
        printf("********* Free Success! *********\n");
}

int main()
{
    TYM *head,*p,*q;
    int i,pos;
    head = p = (TYM *)malloc(sizeof(TYM));           //開辟一個新的空間
    printf("*********************************\n");
    printf("Please Input :\n");
    scanf("%s%d",head->name,&head->num);       //對新空間賦值
    for(i=0;i<4;i++)                                                  //創建4個空間
    {
        q = (TYM*)calloc(1,sizeof(TYM));                 //將開辟的空間的首地址賦給q
        p->next = q;                                                 //將q的值傳遞給p的next成員
        p = q;                                                           //使p指向q
        scanf("%s%d",p->name,&p->num);             //對新空間賦值
        p->next = NULL;                                          //使空間的next成員不指向任何方向
    }
    printf("************ Output *************\n");
    for(p=head;p!=NULL;p=p->next)                     //輸出鏈表
    {
        printf("%s\t%d\n",p->name,p->num);           //輸出當前變量的值
    }
    printf("DELETE......\n");
    printf("******** Position & Lenth *******\n");
    printf("Position:\t");
    scanf("%d",&pos);                                           //輸入刪除結點的地址
    printf("Lenth:\t\t");
    scanf("%d",&i);                                                //輸入刪除結點的個數
    head = del_node(head,pos,i);
    printf("********** Output all ***********\n");
    for(p=head;p!=NULL;p=p->next)                     //輸出經刪除后的鏈表
    {
        printf("%s\t%d\n",p->name,p->num);          //輸出當前變量的值
    }
    freeall(head);                                                 //釋放鏈表
    return 0;
}


****************************************調試窗口****************************************




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品免费一区二区三区四区 | 久久精品99 | 亚州精品成人 | 成人免费毛片片v | 国产资源在线视频 | 国产aaaaav久久久一区二区 | 男女深夜网站 | 伊人爽 | av网站观看| 成人国产在线观看 | 成人免费看片 | 亚洲人在线 | av大片| 不卡视频一区二区三区 | 国产超碰人人爽人人做人人爱 | 午夜免费看视频 | 日韩精品一区二区三区 | 国产高清视频在线 | 国产精品久久久久久婷婷天堂 | 国产高清精品一区二区三区 | 一区二区三区高清在线观看 | 成人在线免费观看视频 | 色婷婷婷婷色 | 免费黄色日本 | av毛片 | 久久久国产精品 | 毛片视频免费观看 | 免费在线一区二区 | 色婷婷综合久久久中字幕精品久久 | 欧美视频二区 | 久久久精品网 | 欧美激情在线一区二区三区 | 一级国产精品一级国产精品片 | 国产精品69av | 国产欧美一区二区三区另类精品 | 亚洲视频中文字幕 | 精品福利在线视频 | 久久综合一区 | 日韩欧美大片在线观看 | 国产一区二区久久 | 免费三级网站 |