线性表

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <stdlib.h>

using namespace std;


#define list_max 100
typedef struct student{
int *elem;
int len;
int cnt;
}pt;
void init(pt * la)
{
(*la).elem = (int *)malloc(sizeof(int)*list_max);
if(!(*la).elem)
exit(-1);
else{
(*la).len = 0;
(*la).cnt = list_max;
}

}
void creat(pt *la)
{
for(int i =0;i<(*la).len; i++)
scanf("%d", &(*la).elem[i]);
return;
}
int insert(pt *la, int el, int k)
{
if(k < 0||k >=list_max)
return 0;
if((*la).len >= (*la).cnt)
{
int *elemkuo = (int *)realloc(la->elem,list_max+10); //用中间变量,防止elemkuo分配失败使以前数据丢失。
if(!elemkuo)
return 0;
la->elem = elemkuo;
la->cnt = la->cnt+10;
}
int * q = &la->elem[k-1];
int *p;
for(p=&la->elem[la->len];p >=q;p--)
*p = *(p-1);
*q = el;
la->len++;
return 1;

}
int delete_list(pt *la,int i, int *e)
{
int *p, *q;

if(i > la->len||i<0)
return 0;

q = &la->elem[i-1];
*e = *q;
for(p = q; p < &la->elem[la->len-1] ;p++)
*p = *(p+1);
--la->len;
return 1;

}

void prin_list(pt la)
{
for(int i=0;i<la.len;i++)
printf("%d ", la.elem[i]);
return;
}
int main()
{
pt La;
int el, t, k, la;
init(&La);
int n;
scanf("%d", &n);
La.len = n;
creat(&La);
printf("是否有需要补充的数据 y/n\n");
char s;
scanf("%c", &s);
if(s == 'y')
{
int i;
printf("请你输入你要插入的值");
scanf("%d", &el);
printf("请你输入你要插入的位置");
scanf("%d", &t);
insert(&La, el, i);
}
int e;
delete_list(&La,k,&e);

prin_list(La);
return 0;
}

 

posted @ 2016-07-18 20:07  JungleHuter  阅读(152)  评论(0编辑  收藏  举报