程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 編程-這結果怎麼顯示鏈表越來越短,在代碼中從哪看出來的?

編程-這結果怎麼顯示鏈表越來越短,在代碼中從哪看出來的?

編輯:編程綜合問答
這結果怎麼顯示鏈表越來越短,在代碼中從哪看出來的?
 #include<stdio.h>
#include<stdlib.h>
typedef struct list
{
    int data;
    struct list *next;
}SLIST;
void fun(SLIST *p)
{
    SLIST  *t, *s;
    t=p->next;    s=p;
    while(t->next != NULL)
    {
        s=t;
        t=t->next;
    }
    printf(" %d ",t->data);
    s->next=NULL;
    free(t);
}
SLIST *creatlist(int  *a)
{
    SLIST *h,*p,*q;      int  i;
    h=p=(SLIST*)malloc(sizeof(SLIST));
    for(i=0;i<8;i++)
    {
        q=(SLIST*)malloc(sizeof(SLIST));
        q->data=a[i];  p->next=q;  p=q;
    }
    p->next=NULL;
    return h;
}
void outlist(SLIST  *h)
{
    SLIST *p;
    p=h->next;
    if(p==NULL)
        printf("\nThe list is NULL!\n");
    else
    {
        printf("\nHead");
        do 
        { 
           printf("->%d",p->data);  p=p->next;  
        } 
        while(p!=NULL);
        printf("->End\n");
    }
}
void main()
{
    SLIST  *head;
    int  a[8]={11,12,15,18,19,22,25,29};
    head=creatlist(a);
    printf("\nOutput from head:\n");  outlist(head);
    printf("\nOutput from tail: \n");
    while (head->next != NULL)
    {
        fun(head);
        printf("\n\n"); printf("\nOutput from head again :\n");  
        outlist(head);
    }
}

圖片說明

最佳回答:


fun函數每次刪掉最後一個節點。


 void fun(SLIST *p)
{
    SLIST  *t, *s;
    t=p->next;    s=p;
    while(t->next != NULL)
    {
        s=t;
        t=t->next;
    }
    printf(" %d ",t->data);
    s->next=NULL;//置為NULL,標志s為末尾
    free(t);//釋放原來的末尾
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved