练习
#include<stdio.h>
#include<stdlib.h>
//#define InitSize 10
//typedef struct {
// int *data;
// int MaxSize;
// int length;
//}SeqList;
//void InitList(SeqList &L)
//{
// L.data = (int*)malloc(InitSize * sizeof(int));
// L.MaxSize = InitSize;
// L.length = 0;
//}
//void LisInsert(SeqList &L, int i, int e) {
// for (int j = L.length; j >= i; j--)
// L.data[j] = L.data[j - 1];
// L.data[i - 1] = e;
// L.length++;
//}
//void day(SeqList& L) {
// for (int i = 0; i < L.MaxSize; i++)
// printf("%d\n", L.data[i]);
//}
//int main()
//{
// SeqList L;
// InitList(L);
//
// day(L);
// LisInsert(L, 3, 3);
// day(L);
// return 0;
//}
//void print(int n)//函数递归
//{
// if (n > 9)
// print(n / 10);
// printf("%d ", n%10);
//}
//int main()
//{
// unsigned int num = 0;
// scanf_s("%d", &num);
// print(num);
// return 0;
//}
//int my_strlen(char* set)//递归求数组长
//{
// if (*set != '\0')
// return 1 + my_strlen(set + 1);
// else
// return 0;
// /*int i = 1;
// while (*set!='\0')
// {
// i++;
// set++;
// }
// return i;*/
//}
//int main()
//{
// char arr[] = "abc";
// int len = my_strlen(arr);
// printf("%d\n", len);
// return 0;
//}
//int fac(int i)//递归i的阶乘
//{
// if (i > 1)
// return i * fac(i - 1);
// else
// return 1;
//}
//int main()
//{
// int i = 0;
// scanf_s("%d ", &i);
// int ret = 0;
// ret = fac(i);
// printf("%d\n", ret);
// return 0;
//}
//int fib(int i)//斐波那契数列
//{
// if (i <= 2)
// return 1;
// else
// return fib(i - 1) + fib(i - 2);
//}
//int fib(int n)
//{
// int a = 1;
// int b = 1;
// int c = 1;
// while (n>2)
// {
// c = a + b;
// a = b;
// b = c;
// n--;
// }
// return c;
//
//}
//int main()
//{
// int i = 0;
// scanf_s("%d ", &i);
// int num = fib(i);
// printf("%d\n", num);
// return 0;
//}
#define InitSize 10
typedef struct {//声明顺序表 动态
int* data;
int MaxSize;
int length;
}SqList;
void InitLize(SqList& L) {//初始化
L.data = (int*)malloc(InitSize * sizeof(int));
L.MaxSize = InitSize;
L.length = 0;
}
void IncreaseSize(SqList& L, int len) {//动态分配
int* p = L.data;
L.data = (int*)malloc((L.MaxSize + len) * sizeof(int));
for (int i = 0; i < L.length; i++)
L.data[i] = p[i];
L.MaxSize = L.MaxSize + len;
free(p);
}
bool ListInsert(SqList& L, int i, int e) {//再第i位插入e
if (i<1 || i>L.length + 1)
return false;
if (L.length >= InitSize)
return false;
for (int j = L.length; j >= i; j--)
L.data[j] = L.data[j - 1];
L.data[i - 1] = e;
L.length++;
return true;
}
bool ListDelete(SqList& L, int i, int& e) {//删去第i位
if (i < 1 || L.length)
return false;
e = L.data[i - 1];
for (int j = i; j < L.length; j++)
L.data[j - 1] = L.data[j];
L.length--;
return true;
}
int main()
{
SqList (L);
InitLize(L);
ListInsert(L, 3, 3);
int e = -1;
if (ListDelete(L, 3, e))
printf("已删除第三个元素,删除的元素值为=%d\n", e);
else
printf("位序不合法,删除失败\n");
IncreaseSize(L, 5);
return 0;
}