从顺序表中删除其值在s与t之间(要求是s<t)的所有元素。如果s或t不合理或顺序表为空,则显示出错信息并退出。
第四题和第五题一样
#include<iostream>
#include<stdlib.h>
#define Size 3
using namespace std;
typedef struct Table {
int* head;
int length;
int size;
}table;
table InitTable()
{
table t;
t.head = (int*)malloc(Size * sizeof(int));
if (!t.head)
{
printf("创建空间失败");
return t;
}
t.length = 0;
t.size = Size;
return t;
}
void displayTable(table t)
{
for (int i = 0; i < t.length; i++)
{
printf("%d ", t.head[i]);
}
printf("\n");
}
int delTable(table &t, int s, int k)
{
int j = 0;
if (s > t.length || k > t.length||s<0||k<0)
{
printf("位置无效");
return -1;
}
for (int i = s; i <t.length; i++)// 改成i=s+1
{
if (j + k >= t.length) ///改成j+k-1
break;
t.head[i - 1] = t.head[k+j]; //改成j+k-1
j++;
}
t.length = t.length - (k - s+1); //改成k-s-1
return 0;
}
int main()
{
table t;
t = InitTable();
for (int i = 0; i < t.size; i++)
{
cin >> t.head[i];
t.length++;
}
int s, k;
cin >> s >> k;
delTable(t, s, k);
displayTable(t);
return 0;
}