开头絮絮叨叨
最近在学树的结构,有点头大。
据说程序员特别喜欢在树上荡来荡去
感觉前面的链表结构是后面各种胡里花哨结构的基础,因此最近也打算回头看看老师当时布置的一些附加题。当时由于上机作业任务繁重,都没来得及好好看。
从这篇文章开始会陆续写一写之前的附加题目作为对知识的巩固和拓展,也希望大家多多支持。
我才不会透露我主要目的是复习数据结构然后期末拿高分
进入正题
已知某顺序结构线性表的结构如下:
struct List
{
int data[MAXLENGTH];
int length;
};
请编写算法,将表中的元素向右移n位,表尾元素移至表头。 例如,原表为(1,2,3,4,5),则将其右移3位后得到表(3,4,5,1,2)
思路:将表中元素存储到一个数组当中,可以将数组中的元素赋值给顺序表中的元素。
#include <bits/stdc++.h>
using namespace std;
#define MAXLENGTH 100
//线性表的结构
typedef struct List
{
int data[MAXLENGTH];
int length;
}List;
//初始化表
void InitList(List &L)
{
for(int i=0;i<MAXLENGTH;i ++)
L.data[i] = 0;
L.length = 0;
}
//创造一个顺序表
void CreateList(List &L, int len)
{
L.length = len;
int x;
for(int i=0;i<L.length;i ++)
cin >> L.data[i];
}
//移动数字
int MoveList(List &L, int n)
{
if(n>=L.length)
return 0;
int a[L.length];
for(int i=0;i<L.length;i ++)
a[i] = L.data[i];
for(int i=0;i