设计算法将顺序表中的数据逆置后输出。用五种的方法,用C语言代码
时间: 2024-05-01 22:18:06 浏览: 96
可以使用以下五种方法将顺序表中的数据逆置后输出:
方法一:双指针法
```
void reverseList(int arr[], int length) {
int left = 0;
int right = length - 1;
while (left < right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
for (int i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
}
```
方法二:递归法
```
void reverseList(int arr[], int left, int right) {
if (left >= right) {
for (int i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
return;
}
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
reverseList(arr, left + 1, right - 1);
}
```
方法三:利用栈的先进后出特性
```
void reverseList(int arr[], int length) {
stack<int> stack;
for (int i = 0; i < length; i++) {
stack.push(arr[i]);
}
for (int i = 0; i < length; i++) {
arr[i] = stack.top();
stack.pop();
printf("%d ", arr[i]);
}
}
```
方法四:利用逆序函数reverse
```
void reverseList(int arr[], int length) {
reverse(arr, arr+length);
for (int i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
}
```
方法五:利用位运算符异或的性质
```
void reverseList(int arr[], int length) {
for (int i = 0; i < length / 2; i++) {
arr[i] ^= arr[length - i - 1];
arr[length - i - 1] ^= arr[i];
arr[i] ^= arr[length - i - 1];
}
for (int i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
}
```
注意:以上代码都是C++的语法,如果要在C语言中实现,需要对部分语法进行调整。
阅读全文