1.定义结构体
#include<stdio.h>
#include<stdlib.h>
#define MAX 10
typedef struct list
{
int length;
int data[MAX];
} *lists;
2.输出
void output(lists para)
{
for (int i = 0; i <= para->length; i++)
{
printf("%d ", para->data[i]);
}
}//输出元素
3.输出地址
void outputMemory(lists para)
{
printf("para的地址是%p\n", para);
printf("para的长度的地址是 % p\n", & para->length);
printf("para的数据的地址是%p\n", & para->data[0]);
printf("para的数据第二个元素的地址是%p\n", & para->data[1]);
}//输出内存
4.初始化
lists iniList(int para[], int paraLength)
{
lists paras = (lists)malloc(sizeof(struct list));
for (int i = 0; i < paraLength; i++)
{
paras->data[i] = para[i];
}
paras->length = paraLength;
return paras;
}// 初始化
5.插入指定位置指定元素
void insertList(lists para, int position, int value)//插入
{
if (position > para->length)
{
printf("无法插入\n");
}
if (position >= MAX)
{
printf("超出范围\n");
}
{
printf("元素已满,无法插入\n");
}
if (position < 0)
{
printf("插入的位不能为负数\n");
}
for (int i = para->length; i > position; i--)
{
para->data[i] = para->data[i - 1];
}
para->data[position] = value;
para->length++;
}
void insertTest()//插入运行
{
int i;
int tempArray[5] = { 3, 5, 2, 7, 4 };
printf("测试开始----------\n");
lists tempList = iniList( tempArray,5 );
printf("After initialization, the list is: \n");
output(tempList);
printf("开始插入--------\n");
{
insertList(tempList, 0, 8);
}
output(tempList);
}
6.删除元素
int deleteElement(lists para, int position)
{
int i = position;
int value = para->data[position];
if (position < 0)
{
printf("无效位置:%d\n", position);
return -1;
}
if (position >= para->length)
{
printf("不能删除没有的数\n");
return -1;
}
for (; i < para->length; i++)
{
para->data[i] = para->data[i + 1];
}
para->length--;
return value;
}
7.定位
int locateElement(lists para, int value)
{
for (int i = 0; i < para->length; i++)
{
if (para->data[i] == value)
{
return i;
}
}
return -1;
}
8.给出位置求相应元素
int getElement(lists para, int position)
{
if (position < 0)
{
printf("无效位置\n");
}
if (position >= para->length)
{
printf("无效数字\n");
}
return para->data[position];
}
9.清除链表
void clearList(lists para)
{
para->length = 0;
}
完整代码
#include<stdio.h>
#include<stdlib.h>
#define MAX 10
typedef struct list
{
int length;
int data[MAX];
} *lists;
void output(lists para)
{
for (int i = 0; i <= para->length; i++)
{
printf("%d ", para->data[i]);
}
}//输出元素
void outputMemory(lists para)
{
printf("para的地址是%p\n", para);
printf("para的长度的地址是 % p\n", & para->length);
printf("para的数据的地址是%p\n", & para->data[0]);
printf("para的数据第二个元素的地址是%p\n", & para->data[1]);
}//输出内存
lists iniList(int para[], int paraLength)
{
lists paras = (lists)malloc(sizeof(struct list));
for (int i = 0; i < paraLength; i++)
{
paras->data[i] = para[i];
}
paras->length = paraLength;
return paras;
}// 初始化
void insertList(lists para, int position, int value)//插入
{
if (position > para->length)
{
printf("无法插入\n");
}
if (position >= MAX)
{
printf("超出范围\n");
}
{
printf("元素已满,无法插入\n");
}
if (position < 0)
{
printf("插入的位不能为负数\n");
}
for (int i = para->length; i > position; i--)
{
para->data[i] = para->data[i - 1];
}
para->data[position] = value;
para->length++;
}
void insertTest()//插入运行
{
int i;
int tempArray[5] = { 3, 5, 2, 7, 4 };
printf("测试开始----------\n");
lists tempList = iniList( tempArray,5 );
printf("After initialization, the list is: \n");
output(tempList);
printf("开始插入--------\n");
{
insertList(tempList, 0, 8);
}
output(tempList);
}
int deleteElement(lists para, int position)
{
int i = position;
int value = para->data[position];
if (position < 0)
{
printf("无效位置:%d\n", position);
return -1;
}
if (position >= para->length)
{
printf("不能删除没有的数\n");
return -1;
}
for (; i < para->length; i++)
{
para->data[i] = para->data[i + 1];
}
para->length--;
return value;
}
void deleteTest()
{
int tempArray[5] = { 3, 5, 2, 7, 4 };
lists tempList = iniList(tempArray, 5);
printf("初始化后是 \n");
output(tempList);
printf("删除之3后是 \n");
deleteElement(tempList, 3);
output(tempList);
outputMemory(tempList);
}
int locateElement(lists para, int value)
{
for (int i = 0; i < para->length; i++)
{
if (para->data[i] == value)
{
return i;
}
}
return -1;
}
int getElement(lists para, int position)
{
if (position < 0)
{
printf("无效位置\n");
}
if (position >= para->length)
{
printf("无效数字\n");
}
return para->data[position];
}
void clearList(lists para)
{
para->length = 0;
}
void main()
{
insertTest();
deleteTest();
}