今天学了线性表顺序表示,自己写了一段代码!实现了 插入和删除!这也是第一次写博客

#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;
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值