`

数据结构-线性表

 
阅读更多

//数组实现线性表
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef struct node{
int data[MAXSIZE];
int length;
} SeqList;

//删除,x为被删除的数据指针,n为删除的位置
void SeqListDelete(SeqList *p,int n,int *x){
int *p1,*p2;
if(n<1||n>=p->length){
printf("delete position error\n");
return;
}
p1=&(p->data[n]);
p2=&(p->data[p->length]);
*x=*p1;
for(;p1<p2;p1++){
 *p1=*(p1+1);
}
p->length--;
}

//初始化
void SeqListInit(SeqList *p,int n){
int i;
if(n>MAXSIZE){
printf("error!\n");
return;
}
for(i=0;i<n;i++){
p->data[i]=i+1;
}
p->length=n;
}
//插入,x为插入的数据,n为数组数据段的大小
void SeqListInsert(SeqList *p,int n,int x){
int *p1,*p2;
if(n<1 || n>p->length){
printf("insert postion error\n");
return;
}
if(p->length>=MAXSIZE){
printf("no enough space\n");
return;
}
p1=&(p->data[n]);

//数组的真实大小要比length要大,这样才可以让最后一位的数据继续后移。
p2=&(p->data[p->length]);
for(;p2>=p1;p2--){
*p2=*(p2-1);
}
*p1=x;
p->length++;
}
int main(){
SeqList s1;
int i;
int n=7;
SeqListInit(&s1,n);
SeqListInsert(&s1,3,88);
int x;
SeqListDelete(&s1,3,&x);
printf("deleted x:%d\n",x);
printf("element(1~%d):\n",s1.length);
for(i=0;i<s1.length;i++){
printf("%d ",s1.data[i]);
}
printf("\n");
return 0;
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics