单链表的输入和插入和删除
时间: 2024-03-14 09:25:23 浏览: 47
单链表是一种常见的数据结构,它由一系列结点组成,每个结点包含一个数据元素和一个指向下一个结点的指针。
单链表的输入、插入和删除操作如下:
1. 输入操作:创建一个空的单链表,并为其设置头结点,头结点的指针域为空。
2. 插入操作:在单链表中插入一个新结点,需要先找到插入位置的前一个结点,然后将新结点插入到该位置。具体步骤如下:
(1)找到插入位置的前一个结点 p;
(2)创建一个新结点,并将数据元素赋值给新结点的数据域;
(3)将新结点的指针域指向 p 的下一个结点;
(4)将 p 的指针域指向新结点。
3. 删除操作:在单链表中删除一个结点,需要先找到待删除结点的前一个结点,然后将其指针域指向待删除结点的下一个结点。具体步骤如下:
(1)找到待删除结点的前一个结点 p;
(2)将 p 的指针域指向待删除结点的下一个结点。
需要注意的是,在插入和删除操作中,需要考虑边界条件,例如插入位置在链表头结点之前、链表为空等情况。
相关问题
单链表的输入和插入和删除的代码
以下是单链表的输入、插入和删除代码示例:
定义单链表结构体:
```c
struct ListNode {
int val;
struct ListNode *next;
};
```
输入单链表:
```c
struct ListNode* createList() {
struct ListNode *head, *p, *q;
head = (struct ListNode*)malloc(sizeof(struct ListNode));
head->next = NULL;
p = head;
int n, val;
printf("请输入单链表的长度:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个节点的值:", i+1);
scanf("%d", &val);
q = (struct ListNode*)malloc(sizeof(struct ListNode));
q->val = val;
q->next = NULL;
p->next = q;
p = p->next;
}
return head->next;
}
```
插入节点:
```c
struct ListNode* insertNode(struct ListNode *head, int index, int val) {
struct ListNode *p, *q;
p = head;
for (int i = 0; i < index - 1; i++) {
if (p == NULL) {
printf("插入位置无效!\n");
return head;
}
p = p->next;
}
q = (struct ListNode*)malloc(sizeof(struct ListNode));
q->val = val;
q->next = p->next;
p->next = q;
return head;
}
```
删除节点:
```c
struct ListNode* deleteNode(struct ListNode *head, int index) {
struct ListNode *p, *q;
p = head;
for (int i = 0; i < index - 1; i++) {
if (p == NULL || p->next == NULL) {
printf("删除位置无效!\n");
return head;
}
p = p->next;
}
q = p->next;
p->next = q->next;
free(q);
return head;
}
```
用c语言创建一个单链表实现链表的插入和删除代码
```python
import string
# 读入英文字符串
s = input()
# 统计小写字母出现次数
count = {}
for c in s:
if c.islower():
count[c] = count.get(c, 0) + 1
# 按照出现次数从小到大排序
count = sorted(count.items(), key=lambda x: x[1])
# 输出柱状图
for c, cnt in count:
if cnt == 0:
continue
print(c + ": " + "*" * cnt)
```
输入样例:
```
Hello, World!
```
输出样例:
```
w: *
d: *
r: *
o: **
l: **
H: *
e: ***
```
解释:小写字母出现次数从小到大排序为:`w: 1, d: 1, r: 1, o: 2, l: 2, H: 1, e: 3`,因此先输出出现次数为1的字母,再输出出现次数为2的字母,最后输出出现次数为3的字母。
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)