一、题目要求:用顺序存储结构设计一个算法,仅用一个辅助结点实现将线性表中的节点循环右移k位的运算,
并分析算法的时间复杂度
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
/*用顺序存储结构设计一个算法,仅用一个辅助结点实现将线性表中的节点循环右移k位的运算,
并分析算法的时间复杂度 */
struct sqlist{
int data[MAXSIZE];
int last;
};
typedef struct sqlist *sequenlist;
//建立线性表
sequenlist *Create(){
int i=0;
char ch;
sequenlist L=(sequenlist)malloc(sizeof(struct sqlist));
L->last=-1;
printf("输入顺序表中的数字以#结束\n");
while((ch=getchar())!='#'){
L->data[i]=ch;
L->last++;
i++;
}
return L;
}
//移动线性表
sequenlist move(sequenlist L,int k)
{
int i,j,temp=0;
for(i=0;i<k;i++){
//i:控制移动次数
for(j=L->last;j>=0;j--){
if(j==L->last){
temp=L->data[j];
}
else{
L->data[j+1]=L->data[j];
}
}
L->data[0]=temp;
}
return L;
}
//输出线性表
void output(sequenlist L){
int i;
for(i=0;i<=L->last;i++){
printf("%c",L->data[i]);
}
}
//主函数
int main(){
int k;
sequenlist L=Create();
printf("enter k\n");
scanf