1.在如下数组A中链接存储了一个线性表,表头指针为A [0].next,试写出该线性表。 线性表为:(78,50,40,60,34,90) A 0 1 2 3 4 5 6 7 data 60 50 78 90 34 40 next 3 5 7 2 0 4 1
时间: 2024-01-01 09:06:15 浏览: 174
根据题目所给的数组A的存储结构,可以画出该线性表的存储结构如下:
```
A 0 1 2 3 4 5 6 7
+---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+
| | | 60| | 50| | 78| | 90| | 34| | 40| | | | |
+---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+
| ---------->| ---------->| ---------->| ---------->| ---------->| ---------->NULL
```
其中,表头指针为A[0].next,指向第一个元素60,每个元素包括数据域和指针域,指针域指向下一个元素。
相关问题
14、在如下数组A中链接存储了一个线性表,表头指针为A [0].next,试写出该线性表。 0 1 2 3 4 5 6 7 data 60 50 78 90 34 40 next 3 5 7 2 0 4 1
很高兴回答你的问题!根据你提供的数组A,该线性表的数据存储如下:
0 -> 6 -> 0 -> 5 -> 0 -> 7 -> 8 -> 9 -> 0 -> 3 -> 4 -> 4 -> 0
表头指针为A [0].next,即线性表的第一个元素在数组中的下标为0,而第一个元素的下一个节点为A [0].next的值,即6。依次类推,可得到上述线性表的存储方式。
希望能够帮助到你!如果你还有其他问题,欢迎随时提出。
1.试写出一个采用单链表存储的线性表A(A带表头结点 Head)的数据元素逆置的算法。
算法思路:
1. 定义三个指针:p、q、r,分别指向头结点、首元结点和尾元结点;
2. 从头结点开始遍历,将p的指针域指向q的指针域,q的指针域指向r的指针域;
3. 将r指向q,q指向p的指针域;
4. 将q指向p,p指向原来的p的指针域;
5. 重复上述步骤,直到p指向NULL,此时链表逆置完成。
算法实现:
void ReverseList(LinkList &A) {
if (A == NULL || A->next == NULL) {
return;
}
ListNode *p = A, *q = A->next, *r = q->next;
while (r != NULL) {
q->next = p;
p = q;
q = r;
r = r->next;
}
q->next = p;
A->next->next = NULL;
A->next = q;
}
注:LinkList为指向链表头结点的指针类型,ListNode为链表结点类型。