当前位置:文档之家› 线性表的创建插入和删除的操作

线性表的创建插入和删除的操作

实验容:线性表的创建、插入删除等#include"stdio.h"#include"stdlib.h"int*inistl(int m,int *n) /*建立线性表函数*/{int*v=NULL;v=malloc(m*sizeof(int*)); /*创建链表,并把首地址赋给指针V*/n=0;return v;}void insl(int*v,int m,int*n,int i,int b)/*在链表指定位置插入元素b*/{int j;if(*n>=m) /*检查是否链表溢出*/{printf("the stack is overflow\n");return;}if(i>*n-1) i=*n+1; /*若插入点大于元素位置则在表的结束插入*/if(i<1) i=1; /*空表在首部插入元素*/for(j=*n;j>=i;j--) /*首位之间任意位置的插入*/v[j]=v[j-1];v[i-1]=b;*n=*n+1; /*插入后元素统计指针加1*/}void desl(int*v,int m,int*n,int i) /*线性表删除函数*/{int j;if(*n==0) /*判断线性表是否为空*/{printf("the stack is underflow\n ");return;}if((i<1)||(i>*n)) /*删除点在首部以前和尾部以后特殊情况排除*/{printf("not this element in the list!");return;}for (j=i;j<=*n-1;j++) /*在允许位置做删除操作*/v[j-1]=v[j];*n=*n-1; /*元素统计指针减1*/return;})void input(int*v,int n) /*空表起始输入元素函数*/{int i;for(i=0;i<n;i++ /*利用循环指针输入元素*/scanf("%d",v+i);}void output(int*v,int n) /*线性表输出打印函数*/{int i;for(i=0;i<n;i++)printf("%d",*(v+i)); /*指针移动指向下一个节点依次输出元素*/ }void main() /*主函数(功能调用函数)*/{int *v,m,*n,i,b; /*v链表空间首地址m线性表容量n线性表实际元素i改变线性表元素位置b插入或删除元素*/n=(int *)malloc(sizeof(int)); /*开辟链表空间*/printf("请输入线性表容量:");scanf("%d",&m);v=inistl(m,n); /*调用创建线性表函数*/printf("请输入线性表实际个数:");scanf("%d",n);printf("请输入线性表起始元素:");input(v,*n); /*调用线性表元素输入函数*/printf("请输入线性表插入点位置:");scanf("%d",&i);printf("请输入线性表插入元素:");scanf("%d",&b);insl(v,m,n,i,b); /*调用线性表插入函数*/printf("输出操作后线性表:");output(v,*n); /*调用线性表输出函数*/printf("\n");printf("请输入线性表删除点位置:");scanf("%d",&i);desl(v,m, n, i); /*调用线性表元素删除函数*/printf("输出操作后线性表:");output(v,*n); /*调用线性表输出函数*/printf("\n");}initsl(int m,int n){int *v=NULL;v=malloc(m*sizeof(int));return v;}void insl(int v,int n,intm,inti,intb){if(*n==m){printf("overflow \n");return;}if(i>*n-1);i=*n+1;if(i<1);i=1;for(j=*n;j>=i:j++)v[j]=v[j-1];v[i-1]=b;*n=*n+1; return;}void desl(int m,int *n,int v,int i) {if(*n==0){printf("underflow \n");return;if((i<1)||(i>*n)){printf("Not this element")input(int *v,int n){for(i=0;i<*n;i++)scanf("%d",v+i);}output(int v,int *n){for(i=0;i<*n;i++)printf("%d",v+i);}void main(){int *v=NULL,m,*n=NULL,i,b;n=malloc(sizeof(int));printf("请输入空间容量:");scanf("%d",&m);v=initsl(m,n);printf("请输入实际个数:");scanf("%d",n);input(v,*n);printf("请输入插入位置:");scanf("%d",&i);printf("请输入插入元素:");scanf("%d",&b);insl(v,m,n,i,b);output(v,*n);printf{"请输入删除位置:");scanf("%d",&i);desl(v,m,n,i);output(v,*n);}软件技术实验#include "stdlib.h"void initsl(v,m,n)int *initsl(int m,int *n);{int *v=NULL;v=malloc(m*sizeof(int);return v;}insl(v,m,n,i,b)void v[],b; int m,*n,i;{ if (*n==m){ printf("overflow \n"); return; }if (i>*n-1) i=*n+1;if (i<1) i=1;for (j=*n;j<=i;j――) v[j]=v[j-1]; v[i-1]=b;*n= *n+1;return;}desl(v,m,n,i)void v[]; int m,*n,i;{ if (*n==0){ printf("underflow \n");return;}if ((i<1) | | (i>*n)){ printf("Not this element in the list \n"); return;}for (j=i;j<=*n-1;j++) v[j-1]=v[j]; *n= *n-1;return;}input(int *v,int n){for(i=0;i<*n;i++)scanf("%d",&v[i]);void main(){int*v=NULL,m,*n=null,i,b;n=malloc(sizeof(int));printf("请输入空间容量:");scanf("%d",&m);v=initsl(m,n);printf("请输入实际个数:");scanf("%d",n);input(v,*n);printf("请输入插入位置:");scanf("%d",&i);printf("请输入插入元素:");scanf("%d",&b);insl(v,m,n,i,b);output(v,*n);printf{"请输入删除位置:");scanf("%d",&i);desl(v,m,n,i);output(v,*n);}#include"stdio.h"#include"stdlib.h"int*inistl(int m,int *n) /*建立线性表函数*/{int*v=NULL;v=malloc(m*sizeof(int*)); /*创建链表,并把首地址赋给指针V*/n=0;return v;}void insl(int*v,int m,int*n,int i,int b)/*在链表指定位置插入元素b*/{int j;if(*n>=m) /*检查是否链表溢出*/{printf("the stack is overflow\n");return;}void insl(int*v,int m,int*n,int i,int b)/*在链表指定位置插入元素b*/{ int j;if(*n>=m) /*检查是否链表溢出*/{printf("the stack is overflow\n");return;}if(i>*n-1) i=*n+1; /*若插入点大于元素位置则在表的结束插入*/if(i<1) i=1; /*空表在首部插入元素*/for(j=*n;j>=i;j--) /*首位之间任意位置的插入*/v[j]=v[j-1];v[i-1]=b;*n=*n+1; /*插入后元素统计指针加1*/}void desl(int*v,int m,int*n,int i) /*线性表删除函数*/{int j;if(*n==0) /*判断线性表是否为空*/{printf("the stack is underflow\n ");return;}if((i<1)||(i>*n)) /*删除点在首部以前和尾部以后特殊情况排除*/{printf("not this element in the list!");return;}for (j=i;j<=*n-1;j++) /*在允许位置做删除操作*/v[j-1]=v[j];*n=*n-1; /*元素统计指针减1*/return;}void input(int*v,int n) /*空表起始输入元素函数*/{int i;for(i=0;i<n;i++) /*利用循环指针输入元素*/scanf("%d",v+i);}void output(int*v,int n) /*线性表输出打印函数*/{int i;for(i=0;i<n;i++)printf("%d",*(v+i)); /*指针移动指向下一个节点依次输出元素*/}void main() /*主函数(功能调用函数)*/{int *v,m,*n,i,b; /*v链表空间首地址m线性表容量n线性表实际元素i改变线性表元素位置b插入或删除元素*/n=(int *)malloc(sizeof(int)); /*开辟链表空间*/int lserch(head,x);struct node *head;int x;{ struct node *p;int k=0;p=head;while((p!=NULL)&&(p->d!=x)){ k++; p=p->next;}if(p==NULL) k=-1;return;}}printf("请输入线性表容量:");scanf("%d",&m);v=inistl(m,n); /*调用创建线性表函数*/ printf("请输入线性表实际个数:");scanf("%d",n);printf("请输入线性表起始元素:");input(v,*n); /*调用线性表元素输入函数*/ printf("请输入线性表插入点位置:");scanf("%d",&i);printf("请输入线性表插入元素:");scanf("%d",&b);insl(v,m,n,i,b); /*调用线性表插入函数*/ printf("输出操作后线性表:");output(v,*n); /*调用线性表输出函数*/ printf("\n");printf("请输入线性表删除点位置:");scanf("%d",&i);desl(v,m, n, i); /*调用线性表元素删除函数*/ printf("输出操作后线性表:");output(v,*n); /*调用线性表输出函数*/ printf("请输入要查找的元素"); /*调用线性查找函数*/scanf("%d",&x);printf("输出操作后线性表:"); /*调用线性表输出函数*/ printf("\n");}运行结果:。

相关主题