数据结构(C语言版)严蔚敏课后习题答案
数据结构(C语言版)严蔚敏课后习题答案
一、线性表
1. 顺序表
顺序表是一种存储结构,它将元素顺序存放在一块连续的存储区域中。C语言中常用数组来实现顺序表。以下是一些常见题目的解答:
题目1:已知顺序表中存储了n个整数,请编写一个算法,将这个顺序表中的所有负数挑选出来,并将它们按照原有顺序存放在新的顺序表中。
解答:
```
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int A[MAX_SIZE], neg[MAX_SIZE];
int n, i, j = 0;
printf("Enter the number of elements: ");
scanf("%d", &n);
printf("Enter the elements: ");
for (i = 0; i < n; i++) {
scanf("%d", &A[i]);
if (A[i] < 0) {
neg[j] = A[i];
j++;
}
}
printf("Negative numbers: ");
for (i = 0; i < j; i++) {
printf("%d ", neg[i]);
}
return 0;
}
```
题目2:假设顺序表A和B中的元素递增有序排列,编写一个算法合并这两个顺序表,并使合并后的顺序表仍然递增有序。
解答:
```
#include <stdio.h>
数据结构与算法c++版 pdf#define MAX_SIZE 100
int main() {
int A[MAX_SIZE], B[MAX_SIZE], C[MAX_SIZE * 2];
int m, n, i, j, k;
printf("Enter the number of elements in the first list: ");
scanf("%d", &m);
printf("Enter the elements in increasing order: ");
for (i = 0; i < m; i++) {
scanf("%d", &A[i]);
C[i] = A[i];
}
printf("Enter the number of elements in the second list: ");
scanf("%d", &n);
printf("Enter the elements in increasing order: ");
for (i = 0; i < n; i++) {
scanf("%d", &B[i]);
C[m + i] = B[i];
}
// Merge A and B into C
i = j = k = 0;
while (i < m && j < n) {
if (A[i] < B[j]) {
C[k] = A[i];
i++;
} else {
C[k] = B[j];
j++;
}
k++;
}
while (i < m) {
C[k] = A[i];
i++;
k++;
}
while (j < n) {
C[k] = B[j];
j++;
k++;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论