数据结构(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小时内删除。