找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2575|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單向鏈表結(jié)點的逐個刪除-C語言教程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:99624 發(fā)表于 2015-12-20 02:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
      每敲一次代碼都會有新的收獲,基本功不扎實啥也干不了。單向鏈表的插入,刪除,創(chuàng)建,遍歷是數(shù)據(jù)結(jié)構(gòu)的基本操作。里邊的算法值得學(xué)習(xí)。

源碼:
/*
先創(chuàng)建一個單向鏈表,然后從頭結(jié)點開始逐個刪除。
*/

#include"stdio.h"
#include"stdlib.h"
//聲明一個結(jié)點,實際上就是定義一個數(shù)據(jù)結(jié)構(gòu)
struct node{
  int num;
  node *next;

};
//創(chuàng)建鏈表
node *creatlist()
{
        int i=0;//統(tǒng)計創(chuàng)建結(jié)點個數(shù)
    node *head,*p2,*p1;//p2用來傳遞結(jié)點指針
    head=p2=p1=new node;
        printf("請輸入頭結(jié)點數(shù)據(jù)域數(shù)據(jù):\n\r");
        scanf("%d",&p1->num);
    p1->next=NULL;
        while(p1->num!=0)
        {
                p1=new node;
                scanf("%d",&p1->num);
                p2->next=p1;//頭結(jié)點指針指向新創(chuàng)建的結(jié)點
            p2=p1;
            i++;
        }
        p2->next=NULL;//鏈表尾結(jié)點
    printf("創(chuàng)建的結(jié)點數(shù)是:%d\n",i);
        return head;
}

void display(node *head)
{
        node *p=head;
    while(p->next!=NULL)
        {
          printf("%d\t",p->num);
          p=p->next;
       
       
        }
   printf("\n");

  
}

//從頭結(jié)點開始刪除整個鏈表
void remove(node *head)
{
    int i=0;//統(tǒng)計刪除結(jié)點個數(shù)
  //通過這兩個指針的移動實現(xiàn)整個鏈表結(jié)點逐個刪除,  
  node *p,*p1;//也就是說本函數(shù)只需輪流使用這兩個指針移動就能實現(xiàn)遍歷鏈表
   p=head;  //存儲頭指針,
   p1=p->next; //存儲頭結(jié)點指針域
   while(p->next!=NULL)//通過循環(huán)逐個刪除結(jié)點
   {
      //剛開始p指向head,即p存儲了頭結(jié)點head本身的指針,即p就是頭結(jié)點指針
       delete p;//通過這一步釋放p所指向的內(nèi)容,即刪除頭結(jié)點內(nèi)容
           i++;
       p=p1;//p指向p1即下一個結(jié)點,這時p1成為新鏈表的頭指針,因為之前的頭結(jié)點已經(jīng)刪除
           //p1原來指向頭結(jié)點的下一個結(jié)點
           p1=p1->next;//通過此步,p1指針重新指向,指向下一個結(jié)點實現(xiàn)指針移動
   }
  delete p;//將最后一個結(jié)點刪除

  printf("刪除結(jié)點個數(shù): %d\n",i);

}

void main()
{
        node  *head=creatlist();
    display(head);
    remove(head);
  
}

--------------GKXW



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

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表