
线性表的创建,插入与删除(⊙o⊙)哦
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MaxSize 10
typedef struct{
int *elem;
int len;
int listsize;
}Sqlist;
void InitSqlist(Sqlist *L)
{
L->elem=(int*)malloc(MaxSize*sizeof(int));
if(!L->elem)
exit(0);
L->len=0;
L->listsize=MaxSize;
}
void InsertItem(Sqlist *L,int i,int item)
{
int *base,*insertPtr,*p;
if(i<1||i>L->len+1)exit(0);
if(L->len>=L->listsize)
{
base=(int*)realloc(L->elem,(L->listsize+10)*sizeof(int));
L->elem=base;
L->listsize=L->listsize+10;
}
insertPtr=&(L->elem[i-1]);
p=&(L->elem[L->len-1]);
for(;p>=insertPtr;p--)
*(p+1)=*p;
*insertPtr=item;
L->len++;
}
void DelItem(Sqlist *L,int i)
{
int *delItem,*p;
if(i<1||i>L->len)exit(0);
delItem=&(L->elem[i-1]);
p=L->elem+L->len-1;
for(++delItem;delItem<=p;++delItem)
*(delItem-1)=*delItem;
L->len--;
}
int main()
{
Sqlist L;
int i;
int index;
int n;
int num;
InitSqlist(&L);
printf("请输入线性表中元素的个数:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("第%d个元素的值为:",i+1);
scanf("%d",&num);
InsertItem(&L,i+1,num);
}
printf("输出:");
for(i=0;i<n;i++)
printf("%d ",L.elem[i]);
putchar('\n');
printf("请输入你要插入的位置及元素:\n");
scanf("%d %d",&index,&num);
InsertItem(&L,index,num);
printf("输出:\n");
for(i=0;i<L.len;i++)
printf("%d ",L.elem[i]);
putchar('\n');
printf("请输入你要删除的位置:\n");
scanf("%d",&index);
DelItem(&L,index);
printf("输出:\n");
for(i=0;i<L.len;i++)
printf("%d ",L.elem[i]);
putchar('\n');
getch();
}
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MaxSize 10
typedef struct{
int *elem;
int len;
int listsize;
}Sqlist;
void InitSqlist(Sqlist *L)
{
L->elem=(int*)malloc(MaxSize*sizeof(int));
if(!L->elem)
exit(0);
L->len=0;
L->listsize=MaxSize;
}
void InsertItem(Sqlist *L,int i,int item)
{
int *base,*insertPtr,*p;
if(i<1||i>L->len+1)exit(0);
if(L->len>=L->listsize)
{
base=(int*)realloc(L->elem,(L->listsize+10)*sizeof(int));
L->elem=base;
L->listsize=L->listsize+10;
}
insertPtr=&(L->elem[i-1]);
p=&(L->elem[L->len-1]);
for(;p>=insertPtr;p--)
*(p+1)=*p;
*insertPtr=item;
L->len++;
}
void DelItem(Sqlist *L,int i)
{
int *delItem,*p;
if(i<1||i>L->len)exit(0);
delItem=&(L->elem[i-1]);
p=L->elem+L->len-1;
for(++delItem;delItem<=p;++delItem)
*(delItem-1)=*delItem;
L->len--;
}
int main()
{
Sqlist L;
int i;
int index;
int n;
int num;
InitSqlist(&L);
printf("请输入线性表中元素的个数:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("第%d个元素的值为:",i+1);
scanf("%d",&num);
InsertItem(&L,i+1,num);
}
printf("输出:");
for(i=0;i<n;i++)
printf("%d ",L.elem[i]);
putchar('\n');
printf("请输入你要插入的位置及元素:\n");
scanf("%d %d",&index,&num);
InsertItem(&L,index,num);
printf("输出:\n");
for(i=0;i<L.len;i++)
printf("%d ",L.elem[i]);
putchar('\n');
printf("请输入你要删除的位置:\n");
scanf("%d",&index);
DelItem(&L,index);
printf("输出:\n");
for(i=0;i<L.len;i++)
printf("%d ",L.elem[i]);
putchar('\n');
getch();
}
