鱼C论坛

 找回密码
 立即注册
查看: 3391|回复: 18

为什么我执行完destroy函数会出现这个框??

[复制链接]
发表于 2018-4-2 09:48:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
销毁到底是什么意思?
执行销毁之后,正常程序应该出现什么情况?
# include<stdio.h>
# include<stdlib.h>

typedef struct LNode{
        int data;
        struct LNode *next;
}LNode,*Linklist;

void initlist(Linklist *L)
{
        (*L)=(Linklist)malloc(sizeof(LNode));
        if(!(*L))
                printf("对不起,无法进行地址分配哦~\n");
        (*L)->next=*L;
        printf("初始化成功 ~\n");
}

void creatlist(Linklist *L)//尾插法
{
        int n,i;
        Linklist r;//指向尾节点
        r=*L;
        printf("请输入需要的元素个数:");
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
                Linklist p=malloc(sizeof(LNode));
                if(!p)
                        printf("对不起,无法正常分配空间哦\n");
                else
                {
                        printf("请输入第%d个元素",i+1);
                        scanf("%d",&p->data);
                        p->next=*L;
                        r->next=p;
                        r=p;
                }
        }
}


void showlist(Linklist *L)
{
        Linklist p;
        p=(*L)->next;
        if((*L)->next==*L)
                printf("循环链表中没有元素哦,无法显示。\n");
        else
        {
                while(p!=(*L))
                {
                        printf("%d ",p->data);
                        p=p->next;
                }
        }
        printf("\n");
}

void destroylist(Linklist *L)
{
        Linklist p;
        while(*L)
        {
                p=(*L)->next;
                free(*L);
                *L=p;
        }
}

void lengthlist(Linklist *L)
{
        Linklist p;
        int length=0;
        p=(*L)->next;
        while(p!=(*L))
        {
                length++;
                p=p->next;
        }
        printf("您的循环链表长度为%d\n",length);
}


int main()
{
        Linklist L;
        initlist(&L);
        creatlist(&L);
        showlist(&L);
        lengthlist(&L);
        destroylist(&L);
        showlist(&L);
        return 0;
}
QQ图片20180402094545.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-2 09:54:23 | 显示全部楼层
目测是删了未分配的椎空间
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-2 10:54:01 | 显示全部楼层
BngThea 发表于 2018-4-2 09:54
目测是删了未分配的椎空间

可是销毁不就是要把从头到尾把每一个结点都释放掉吗??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 11:06:44 | 显示全部楼层
是不是你的链表尾部不为NULL?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 11:58:33 | 显示全部楼层
无标题.png

多了一个 -842150451 吧,那么请问 -842150451 从何而来?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-2 15:47:45 | 显示全部楼层
BngThea 发表于 2018-4-2 11:06
是不是你的链表尾部不为NULL?

我是循环链表,尾部不是应该指向头结点吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-2 15:48:36 | 显示全部楼层
人造人 发表于 2018-4-2 11:58
多了一个 -842150451 吧,那么请问 -842150451 从何而来?

这个842150451是什么东西....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 15:56:12 | 显示全部楼层
愿你 发表于 2018-4-2 15:48
这个842150451是什么东西....

无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-2 15:59:05 | 显示全部楼层

可是头结点的数据域不是可以不写吗
销毁不是从头结点一个一个销毁吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 16:09:27 | 显示全部楼层
愿你 发表于 2018-4-2 15:47
我是循环链表,尾部不是应该指向头结点吗

原来你的头节点根本没放数据,怎么能free
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-2 16:13:52 | 显示全部楼层
BngThea 发表于 2018-4-2 16:09
原来你的头节点根本没放数据,怎么能free

为什么没有数据就不可以free。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 16:42:47 | 显示全部楼层
愿你 发表于 2018-4-2 16:13
为什么没有数据就不可以free。




好吧,和1234没有任何关系,以后不要写这种让人误解的代码,头结点的数据域没有初始化,我的本能告诉我这里有问题^_^,其实这个问题不会导致这个程序崩溃,其他的我就不保证了,所以,还是尽量把改初始化的都初始化了





好了,现在来看看你程序的问题
请问,什么时候while循环会停止?
也就是说*L什么时候会是0 ?
0表示假,0会使while循环停止
那么,什么时候*L会是0 ?

无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-2 20:35:22 | 显示全部楼层
人造人 发表于 2018-4-2 16:42
好吧,和1234没有任何关系,以后不要写这种让人误解的代码,头结点的数据域没有初始化,我的本能告 ...

这个问题把我难住了
因为是循环链表,所以我不可以先释放头结点?因为如果我先释放头结点,我尾节点是指向头结点的,那么我找不到终止循环的条件
是这样吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 20:48:03 | 显示全部楼层
愿你 发表于 2018-4-2 20:35
这个问题把我难住了
因为是循环链表,所以我不可以先释放头结点?因为如果我先释放头结点, ...
  1. # include<stdio.h>
  2. # include<stdlib.h>

  3. typedef struct LNode {
  4.         int data;
  5.         struct LNode *next;
  6. }LNode, *Linklist;

  7. void initlist(Linklist *L)
  8. {
  9.         (*L) = (Linklist)malloc(sizeof(LNode));
  10.         if(!(*L))
  11.                 printf("对不起,无法进行地址分配哦~\n");
  12.         (*L)->next = *L;
  13.         printf("初始化成功 ~\n");

  14.         (*L)->data = 1234;
  15. }

  16. void creatlist(Linklist *L)//尾插法
  17. {
  18.         int n, i;
  19.         Linklist r;//指向尾节点
  20.         r = *L;
  21.         printf("请输入需要的元素个数:");
  22.         scanf("%d", &n);
  23.         for(i = 0; i<n; i++)
  24.         {
  25.                 Linklist p = malloc(sizeof(LNode));
  26.                 if(!p)
  27.                         printf("对不起,无法正常分配空间哦\n");
  28.                 else
  29.                 {
  30.                         printf("请输入第%d个元素", i + 1);
  31.                         scanf("%d", &p->data);
  32.                         p->next = *L;
  33.                         r->next = p;
  34.                         r = p;
  35.                 }
  36.         }
  37. }


  38. void showlist(Linklist *L)
  39. {
  40.         Linklist p;
  41.         p = (*L)->next;
  42.         if((*L)->next == *L)
  43.                 printf("循环链表中没有元素哦,无法显示。\n");
  44.         else
  45.         {
  46.                 while(p != (*L))
  47.                 {
  48.                         printf("%d ", p->data);
  49.                         p = p->next;
  50.                 }
  51.         }
  52.         printf("\n");
  53. }

  54. int lengthlist(Linklist *L)
  55. {
  56.         Linklist p;
  57.         int length = 0;
  58.         p = (*L)->next;
  59.         while(p != (*L))
  60.         {
  61.                 length++;
  62.                 p = p->next;
  63.         }
  64.         printf("您的循环链表长度为%d\n", length);

  65.         return length;
  66. }

  67. void destroylist(Linklist *L)
  68. {
  69.         Linklist p;

  70.         int len = lengthlist(L);
  71.         for(int i = 0; i < len + 1; ++i)
  72.         {
  73.                 p = (*L)->next;
  74.                 free(*L);
  75.                 *L = p;
  76.         }
  77. }

  78. int main()
  79. {
  80.         Linklist L;
  81.         initlist(&L);
  82.         creatlist(&L);
  83.         showlist(&L);
  84.         lengthlist(&L);
  85.         destroylist(&L);
  86.         //showlist(&L);
  87.         return 0;
  88. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-2 22:04:19 | 显示全部楼层

我照你的程序代码改了
可是程序还是停止工作
void destroylist(Linklist *L)  //销毁链表
{
        Linklist p;
        int len=lengthlist(&L);
        int i;
        for(i=0;i<len;i++)
        {
                p=(*L)->next;
                free(*L);
                *L=p;
        }
}

int lengthlist(Linklist *L) //求链表长度
{
        Linklist p;
        int length=0;
        p=(*L)->next;
        while(p!=(*L))
        {
                length++;
                p=p->next;
        }
        printf("您的循环链表长度为%d\n",length);
        return length;
}
QQ图片20180402220301.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-2 22:13:47 | 显示全部楼层

我才发现论坛有这个功能


  1. void destroylist(Linklist *L)  //销毁链表
  2. {
  3.         Linklist p;
  4.         int len=lengthlist(&L);
  5.         int i;
  6.         for(i=0;i<len;i++)
  7.         {
  8.                 p=(*L)->next;
  9.                 free(*L);
  10.                 *L=p;
  11.         }
  12. }

  13. int lengthlist(Linklist *L) //求链表长度
  14. {
  15.         Linklist p;
  16.         int length=0;
  17.         p=(*L)->next;
  18.         while(p!=(*L))
  19.         {
  20.                 length++;
  21.                 p=p->next;
  22.         }
  23.         printf("您的循环链表长度为%d\n",length);
  24.         return length;
  25. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 08:36:21 | 显示全部楼层
愿你 发表于 2018-4-2 22:13
我才发现论坛有这个功能

发完整代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-3 20:16:29 | 显示全部楼层

我把destroy函数改了下,但还是会出现程序停止运行的框
那究竟怎么样才算程序已经把销毁工作完成??


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

  3. typedef struct LNode{
  4.         int data;
  5.         struct LNode *next;
  6. }LNode,*Linklist;

  7. void initlist(Linklist *L) //初始化链表
  8. {
  9.         (*L)=(Linklist)malloc(sizeof(LNode));
  10.         if(!(*L))
  11.                 printf("对不起,无法进行地址分配哦~\n");
  12.         (*L)->next=*L;
  13.         printf("初始化成功 ~\n");
  14. }

  15. void creatlist(Linklist *L)//尾插法创建链表
  16. {
  17.         int n,i;
  18.         Linklist r;//指向尾节点
  19.         r=*L;
  20.         printf("请输入需要的元素个数:");
  21.         scanf("%d",&n);
  22.         for(i=0;i<n;i++)
  23.         {
  24.                 Linklist p=malloc(sizeof(LNode));
  25.                 if(!p)
  26.                         printf("对不起,无法正常分配空间哦\n");
  27.                 else
  28.                 {
  29.                         printf("请输入第%d个元素",i+1);
  30.                         scanf("%d",&p->data);
  31.                         p->next=*L;
  32.                         r->next=p;
  33.                         r=p;
  34.                 }
  35.         }
  36. }


  37. void showlist(Linklist *L) //显示链表
  38. {
  39.         Linklist p;
  40.         p=(*L)->next;
  41.         if((*L)->next==*L)
  42.                 printf("循环链表中没有元素哦,无法显示。\n");
  43.         else
  44.         {
  45.                 while(p!=(*L))
  46.                 {
  47.                         printf("%d ",p->data);
  48.                         p=p->next;
  49.                 }
  50.         }
  51.         printf("\n");
  52. }

  53. /*void destroylist(Linklist *L)  //销毁链表
  54. {
  55.         Linklist p;
  56.         int len=lengthlist(&L);
  57.         int i;
  58.         for(i=0;i<len;i++)
  59.         {
  60.                 p=(*L)->next;
  61.                 free(*L);
  62.                 *L=p;
  63.         }
  64.         printf("您的链表已被销毁~\n");
  65. }*/

  66. int destroylist(Linklist *L)
  67. {
  68.         Linklist p,pnext,p1=(*L)->next;
  69.         for(p=p1;p->next!=p1;p=pnext)
  70.         {
  71.                 pnext=p->next;
  72.                 free(p);
  73.         }
  74.         free(*L);
  75.         printf("您的链表已被销毁~\n");
  76.         return 0;
  77. }












  78. int lengthlist(Linklist *L) //求链表长度
  79. {
  80.         Linklist p;
  81.         int length=0;
  82.         p=(*L)->next;
  83.         while(p!=(*L))
  84.         {
  85.                 length++;
  86.                 p=p->next;
  87.         }
  88.         printf("您的循环链表长度为%d\n",length);
  89.         return length;
  90. }

  91. void clearlist(Linklist *L)  //清空链表
  92. {
  93.         Linklist p,q;
  94.         p=(*L)->next;
  95.         while(p!=(*L))
  96.         {
  97.                 q=p->next;
  98.                 free(p);
  99.                 p=q;
  100.         }
  101.         p->next=(*L);
  102. }

  103. void isempty(Linklist *L) //判断表是否为空
  104. {
  105.         if((*L)->next==(*L))
  106.                 printf("该链表为空\n");
  107.         else
  108.                 printf("该链表不为空~\n");
  109. }


  110. void locateelemlist(Linklist *L) //根据元素内容判断元素位置
  111. {
  112.         int e,i=0;
  113.         Linklist p;
  114.         printf("请输入您想要查询的元素内容:");
  115.         scanf("%d",&e);
  116.         p=(*L)->next;
  117.         if((*L)->next==*L)
  118.                 printf("循环链表中没有元素哦,无法查询。\n");
  119.         while(p->next!=(*L))
  120.         {
  121.                 i++;
  122.                 if(p->data==e)
  123.                         printf("您查询的元素内容%d是第%d号元素\n",e,i);
  124.                 p=p->next;
  125.         }
  126. }

  127. void getelemlist(Linklist *L) //根据元素位置查找元素内容。
  128. {
  129.         int i=0,e,j;
  130.         Linklist p=(*L)->next;
  131.         printf("请输入您想要查询的元素位置:");
  132.         scanf("%d",&j);
  133.         if((*L)->next==*L)
  134.                 printf("循环链表中没有元素哦,无法查询。\n");
  135.         else
  136.         {
  137.                 while(p!=(*L))
  138.                 {
  139.                         i++;
  140.                         if(i==j)
  141.                         {
  142.                                 e=p->data;
  143.                                 printf("您所要查询的位置的元素内容为%d\n",e);
  144.                                 break;
  145.                         }
  146.                         p=p->next;
  147.                 }
  148.                 if(i!=j)
  149.                         printf("尚未查询到您所需要的元素。\n");
  150.         }
  151. }

  152. void insertlist(Linklist *L)  //将指定的元素位置之前插入一个元素
  153. {
  154.         int j,i,e;
  155.         Linklist p,s;
  156.         p=*L;       
  157.         j=0;
  158.         printf("请输入您想要在几号元素之前插入什么元素内容");
  159.         scanf("%d,%d",&i,&e);
  160.         while(p->next!=(*L)&&j<i-1)
  161.         {
  162.                 p=p->next;
  163.                 j++;
  164.         }
  165.         if(!p||j>i-1)
  166.                 printf("对不起插入位置有误。\n");
  167.         else
  168.         {
  169.                 s=(Linklist)malloc(sizeof(LNode));
  170.                 s->data=e;
  171.                 s->next=p->next;
  172.                 p->next=s;
  173.         }
  174. }

  175. void deletelist(Linklist *L)
  176. {
  177.         int i,j;
  178.         Linklist p,q;
  179.         p=*L;
  180.         j=0;
  181.         printf("请问您想要在删除哪一号元素:");
  182.         scanf("%d",&i);
  183.         while(p->next!=(*L)&&j<i-1)
  184.         {
  185.                 p=p->next;
  186.                 j++;
  187.         }
  188.         if(!p&&j>i-1)
  189.                 printf("对不起删除位置有误\n");
  190.         else
  191.         {
  192.                 q=p->next;
  193.                 p->next=q->next;
  194.         }
  195. }






  196. int main()
  197. {
  198.         Linklist L;
  199.         initlist(&L);
  200.         creatlist(&L);
  201.         showlist(&L);
  202.         lengthlist(&L);
  203.         destroylist(&L);
  204.         //locateelemlist(&L);
  205.         lengthlist(&L);
  206.         showlist(&L);
  207.         //getelemlist(&L);
  208.         /*insertlist(&L);
  209.         showlist(&L);
  210.         deletelist(&L);
  211.         showlist(&L);
  212.         clearlist(&L);
  213.         showlist(&L);*/
  214.         return 0;
  215. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 22:04:04 | 显示全部楼层
愿你 发表于 2018-4-3 20:16
我把destroy函数改了下,但还是会出现程序停止运行的框
那究竟怎么样才算程序已经把销毁工作完成??

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

  3. typedef struct LNode {
  4.         int data;
  5.         struct LNode *next;
  6. }LNode, *Linklist;

  7. void initlist(Linklist *L) //初始化链表
  8. {
  9.         (*L) = (Linklist)malloc(sizeof(LNode));
  10.         if(!(*L))
  11.                 printf("对不起,无法进行地址分配哦~\n");
  12.         (*L)->next = *L;
  13.         printf("初始化成功 ~\n");


  14.         (*L)->data = 1234;        // debug
  15. }

  16. void creatlist(Linklist *L)//尾插法创建链表
  17. {
  18.         int n, i;
  19.         Linklist r;//指向尾节点
  20.         r = *L;
  21.         printf("请输入需要的元素个数:");
  22.         scanf("%d", &n);
  23.         for(i = 0; i<n; i++)
  24.         {
  25.                 Linklist p = malloc(sizeof(LNode));
  26.                 if(!p)
  27.                         printf("对不起,无法正常分配空间哦\n");
  28.                 else
  29.                 {
  30.                         printf("请输入第%d个元素", i + 1);
  31.                         scanf("%d", &p->data);
  32.                         p->next = *L;
  33.                         r->next = p;
  34.                         r = p;
  35.                 }
  36.         }
  37. }


  38. void showlist(Linklist *L) //显示链表
  39. {
  40.         if(*L == NULL)
  41.                 return -1;

  42.         Linklist p;
  43.         p = (*L)->next;
  44.         if((*L)->next == *L)
  45.                 printf("循环链表中没有元素哦,无法显示。\n");
  46.         else
  47.         {
  48.                 while(p != (*L))
  49.                 {
  50.                         printf("%d ", p->data);
  51.                         p = p->next;
  52.                 }
  53.         }
  54.         printf("\n");
  55. }

  56. /*void destroylist(Linklist *L)  //销毁链表
  57. {
  58. Linklist p;
  59. int len=lengthlist(&L);
  60. int i;
  61. for(i=0;i<len;i++)
  62. {
  63. p=(*L)->next;
  64. free(*L);
  65. *L=p;
  66. }
  67. printf("您的链表已被销毁~\n");
  68. }*/

  69. int destroylist(Linklist *L)
  70. {
  71.         Linklist p, pnext, p1 = (*L)->next;
  72.         for(p = p1; p->next != p1; p = pnext)
  73.         {
  74.                 pnext = p->next;
  75.                 free(p);
  76.         }
  77.         free(*L);
  78.         printf("您的链表已被销毁~\n");

  79.         *L = NULL;

  80.         return 0;
  81. }












  82. int lengthlist(Linklist *L) //求链表长度
  83. {
  84.         if(*L == NULL)
  85.                 return -1;

  86.         Linklist p;
  87.         int length = 0;
  88.         p = (*L)->next;
  89.         while(p != (*L))
  90.         {
  91.                 length++;
  92.                 p = p->next;
  93.         }
  94.         printf("您的循环链表长度为%d\n", length);
  95.         return length;
  96. }

  97. void clearlist(Linklist *L)  //清空链表
  98. {
  99.         Linklist p, q;
  100.         p = (*L)->next;
  101.         while(p != (*L))
  102.         {
  103.                 q = p->next;
  104.                 free(p);
  105.                 p = q;
  106.         }
  107.         p->next = (*L);
  108. }

  109. void isempty(Linklist *L) //判断表是否为空
  110. {
  111.         if((*L)->next == (*L))
  112.                 printf("该链表为空\n");
  113.         else
  114.                 printf("该链表不为空~\n");
  115. }


  116. void locateelemlist(Linklist *L) //根据元素内容判断元素位置
  117. {
  118.         int e, i = 0;
  119.         Linklist p;
  120.         printf("请输入您想要查询的元素内容:");
  121.         scanf("%d", &e);
  122.         p = (*L)->next;
  123.         if((*L)->next == *L)
  124.                 printf("循环链表中没有元素哦,无法查询。\n");
  125.         while(p->next != (*L))
  126.         {
  127.                 i++;
  128.                 if(p->data == e)
  129.                         printf("您查询的元素内容%d是第%d号元素\n", e, i);
  130.                 p = p->next;
  131.         }
  132. }

  133. void getelemlist(Linklist *L) //根据元素位置查找元素内容。
  134. {
  135.         int i = 0, e, j;
  136.         Linklist p = (*L)->next;
  137.         printf("请输入您想要查询的元素位置:");
  138.         scanf("%d", &j);
  139.         if((*L)->next == *L)
  140.                 printf("循环链表中没有元素哦,无法查询。\n");
  141.         else
  142.         {
  143.                 while(p != (*L))
  144.                 {
  145.                         i++;
  146.                         if(i == j)
  147.                         {
  148.                                 e = p->data;
  149.                                 printf("您所要查询的位置的元素内容为%d\n", e);
  150.                                 break;
  151.                         }
  152.                         p = p->next;
  153.                 }
  154.                 if(i != j)
  155.                         printf("尚未查询到您所需要的元素。\n");
  156.         }
  157. }

  158. void insertlist(Linklist *L)  //将指定的元素位置之前插入一个元素
  159. {
  160.         int j, i, e;
  161.         Linklist p, s;
  162.         p = *L;
  163.         j = 0;
  164.         printf("请输入您想要在几号元素之前插入什么元素内容");
  165.         scanf("%d,%d", &i, &e);
  166.         while(p->next != (*L) && j<i - 1)
  167.         {
  168.                 p = p->next;
  169.                 j++;
  170.         }
  171.         if(!p || j>i - 1)
  172.                 printf("对不起插入位置有误。\n");
  173.         else
  174.         {
  175.                 s = (Linklist)malloc(sizeof(LNode));
  176.                 s->data = e;
  177.                 s->next = p->next;
  178.                 p->next = s;
  179.         }
  180. }

  181. void deletelist(Linklist *L)
  182. {
  183.         int i, j;
  184.         Linklist p, q;
  185.         p = *L;
  186.         j = 0;
  187.         printf("请问您想要在删除哪一号元素:");
  188.         scanf("%d", &i);
  189.         while(p->next != (*L) && j<i - 1)
  190.         {
  191.                 p = p->next;
  192.                 j++;
  193.         }
  194.         if(!p&&j>i - 1)
  195.                 printf("对不起删除位置有误\n");
  196.         else
  197.         {
  198.                 q = p->next;
  199.                 p->next = q->next;
  200.         }
  201. }






  202. int main()
  203. {
  204.         Linklist L;
  205.         initlist(&L);
  206.         creatlist(&L);
  207.         showlist(&L);
  208.         lengthlist(&L);
  209.         destroylist(&L);
  210.         //locateelemlist(&L);
  211.         lengthlist(&L);
  212.         showlist(&L);
  213.         //getelemlist(&L);
  214.         /*insertlist(&L);
  215.         showlist(&L);
  216.         deletelist(&L);
  217.         showlist(&L);
  218.         clearlist(&L);
  219.         showlist(&L);*/
  220.         return 0;
  221. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 15:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表