#include <stdio.h>
#include <STDLIB.H>
#define LIST_MAX 100
#define LISTINCREMENT 10
typedef int ElemType;
//
//线性表结构
typedef struct
{
ElemType *elem; //存储空间基址
int m_length; //当前长度
int m_listsize; //当前分配的存储容量
}List;
//
//
//构建一个空的线性表
int CreatList(List &m_List)
{
m_List.elem = (ElemType *)malloc(LIST_MAX*sizeof(int)); //开辟LIS_MAX个空间
m_List.m_length = 0; //线性表当前长度
m_List.m_listsize = LIST_MAX; //初始化容量
return 1;
}
//
//
//输出链表信息
void PrintList(List &m_List)
{
for(int i=0;i<m_List.m_length;i++)
printf("%d\n",m_List.elem[i]);
}
//
//
//在第i个位置前插入一个数
int InsertList(List &m_List,int i,int elem)
{
int *m_base,*q,*p;
if(i<1||i>m_List.m_length+1) return 0;
if(m_List.m_length>=m_List.m_listsize)
{
m_base = (ElemType*)malloc((m_List.m_listsize + LISTINCREMENT)*sizeof(int));
if(!m_base) exit(-2);
m_List.elem = m_base;
}
m_List.m_listsize += LISTINCREMENT;
q = &(m_List.elem[i-1]);
for(p =&(m_List.elem[m_List.m_length-1]);p>=q;p--)
*(p+1) = *p;
*q = elem;
++m_List.m_length;
return 1;
}
//
//
//删除第i个数
int DeleteList(List &m_List,int i)
{
int *p,*q;
if(i<1||i>m_List.m_length)
return 0;
p = &m_List.elem[i-1];
q = m_List.elem + m_List.m_length - 1; //表示最后一个元素的位置
for(++p;p<=q;++p)
*(p - 1) = *p;
--m_List.m_length;
return 1;
}
//
int main()
{
List m_NewList;
int n;
if(CreatList(m_NewList))
{
printf("请输入n个数:\n");
scanf("%d",&n);
for(int j=0;j<n;j++)
{
scanf("%d",&m_NewList.elem[j]);
m_NewList.m_length++;
}
}
InsertList(m_NewList,2,8);
PrintList(m_NewList);
printf("请输入删除第几个元素:\n");
int m;
scanf("%d",&m);
if(DeleteList(m_NewList,m))
{
printf("删除元素成功!\n");
PrintList(m_NewList);
}
else
printf("删除元素失败!\n");
return 0;
}
#include <STDLIB.H>
#define LIST_MAX 100
#define LISTINCREMENT 10
typedef int ElemType;
//
//线性表结构
typedef struct
{
ElemType *elem; //存储空间基址
int m_length; //当前长度
int m_listsize; //当前分配的存储容量
}List;
//
//
//构建一个空的线性表
int CreatList(List &m_List)
{
m_List.elem = (ElemType *)malloc(LIST_MAX*sizeof(int)); //开辟LIS_MAX个空间
m_List.m_length = 0; //线性表当前长度
m_List.m_listsize = LIST_MAX; //初始化容量
return 1;
}
//
//
//输出链表信息
void PrintList(List &m_List)
{
for(int i=0;i<m_List.m_length;i++)
printf("%d\n",m_List.elem[i]);
}
//
//
//在第i个位置前插入一个数
int InsertList(List &m_List,int i,int elem)
{
int *m_base,*q,*p;
if(i<1||i>m_List.m_length+1) return 0;
if(m_List.m_length>=m_List.m_listsize)
{
m_base = (ElemType*)malloc((m_List.m_listsize + LISTINCREMENT)*sizeof(int));
if(!m_base) exit(-2);
m_List.elem = m_base;
}
m_List.m_listsize += LISTINCREMENT;
q = &(m_List.elem[i-1]);
for(p =&(m_List.elem[m_List.m_length-1]);p>=q;p--)
*(p+1) = *p;
*q = elem;
++m_List.m_length;
return 1;
}
//
//
//删除第i个数
int DeleteList(List &m_List,int i)
{
int *p,*q;
if(i<1||i>m_List.m_length)
return 0;
p = &m_List.elem[i-1];
q = m_List.elem + m_List.m_length - 1; //表示最后一个元素的位置
for(++p;p<=q;++p)
*(p - 1) = *p;
--m_List.m_length;
return 1;
}
//
int main()
{
List m_NewList;
int n;
if(CreatList(m_NewList))
{
printf("请输入n个数:\n");
scanf("%d",&n);
for(int j=0;j<n;j++)
{
scanf("%d",&m_NewList.elem[j]);
m_NewList.m_length++;
}
}
InsertList(m_NewList,2,8);
PrintList(m_NewList);
printf("请输入删除第几个元素:\n");
int m;
scanf("%d",&m);
if(DeleteList(m_NewList,m))
{
printf("删除元素成功!\n");
PrintList(m_NewList);
}
else
printf("删除元素失败!\n");
return 0;
}