线性表

1.设计在无头结点的单链表中删除第i个结点的算法。

[分析]

应判断删除位置的合法性,当 i < 0 或 i > n - 1 时,不允许进行删除操作;

当 i = 0 时,删除第一个结点;

当 0 < i < n 时,允许进行删除操作,但在查找被删除结点时,须用指针记住该结点的前趋结点。

[算法描述]

 1 delete(LinkList *q, int i)
 2 {
 3     //在无头结点的单链表中删除第i个结点
 4     LinkList *p, *s;
 5     int j;
 6     if(i < 0)
 7         printf("Can't delete.");
 8     else if(i == 0)
 9            {
10                s = q;
11                q = q -> next;
12                free(s); 
13            }
14             else
15             {
16                  j = 0;
17                  s = q;
18                  while((j < i) && (s != NULL))
19                  {
20                       p = s;
21                       s = s-> next;
22                       j ++;
23                  }
24                  if(s == NULL)
25                      printf("Can't delete.");
26                  else
27                  {
28                       p -> next = s -> next;
29                       free(s);
30                  }
31             }
32 }
算法描述

 

2.

posted @ 2019-10-09 14:02  Techi  阅读(86)  评论(0)    收藏  举报