单链表相关习题(C语言实现)

链表的定义

顺序表的插入、删除操作需要移动大量的元素,影响运行效率,由此引入了链式存储。链式存储线性表时,不需要使用地址连续的存储单元,即它不要求逻辑上相邻的两个元素在物理位置上也相邻。

线性表的链式存储又称为单链表,单链表中结点类型的描述如下:

1
2
3
4
5
typedef int ElemType; //顺序表元素类型
typedef struct Node{
ElemType data; //数据
struct Node *next; //下一结点指针
}Node, *LinkList;

头插法初始化带头结点的单链表:

1
2
3
4
5
6
7
8
9
10
11
12
LinkList initLinkList(LinkList &L, ElemType data[], int length){
Node *n;
L = (LinkList)malloc(sizeof(Node));
L->next = NULL;
for (int i = length-1; i >= 0; i--){ //将数组倒序插入链表
n = (Node*)malloc(sizeof(Node));
n->data = data[i];
n->next = L->next;
L->next = n;
}
return L;
}

相关习题

1、设计一个递归算法,删除不带头节点的单链表L中所有值为x的节点

思路:

1
2
3
4
```
##
>思路:
```c

##

思路:

1
2
3
4
```
##
>思路:
```c

##

思路:

1
2
3
4
```
##
>思路:
```c

##

思路:

1
2
3
4
```
##
>思路:
```c

##

思路:

1
2
3
4
```
##
>思路:
```c

##

思路:

1
2
3
4
```
##
>思路:
```c

##

思路:

1
2
3
4
```
##
>思路:
```c