数据结构(C语言描述) 线性表实验
请用顺序表或链表构造一线性表,实现插入、删除、查找等功能。要求:提交包含源程序(部分)和程序运行的屏幕截图如有答案请发到455958106@qq.com(包含截图),先谢...
请用顺序表或链表构造一线性表,实现插入、删除、查找等功能。
要求:提交包含源程序(部分)和程序运行的屏幕截图
如有答案请发到455958106@qq.com(包含截图),先谢谢给位了
(一份也行,最好有两份不同答案,两份答案的我会额外加分,谢谢啦)
答案请发邮箱!!!!!!因为老师说答案重复就死定了,谢谢啦
希望在visual6.0里能运行~~~ 展开
要求:提交包含源程序(部分)和程序运行的屏幕截图
如有答案请发到455958106@qq.com(包含截图),先谢谢给位了
(一份也行,最好有两份不同答案,两份答案的我会额外加分,谢谢啦)
答案请发邮箱!!!!!!因为老师说答案重复就死定了,谢谢啦
希望在visual6.0里能运行~~~ 展开
6个回答
展开全部
#include<stdio.h>
#include<malloc.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct{
int * elem;
int length;
int listsize;
}SqList;
//SqList sq;
void InitList_Sq(SqList *sq) //初始化列表
{
sq->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
sq->length=0;
sq->listsize=LIST_INIT_SIZE;
printf("---申请空间成功---!\n");
}
void GetElem(SqList *sq,int i)//获取第i位置元素的值
{
int *p;
p=&(sq->elem[i-1]);
printf("%d",*p);
printf("\n");
}
int ListInsert_Sq(SqList *sq,int i,int a)//在i位置之前插入a
{
int *p,*q;
if(i<=0||i>sq->length+1)
{
printf("---位置不合法---!\n");
return 0;
}
if(sq->length>=sq->listsize)
{
int* newbase=(int *)realloc(sq->elem,(sq->listsize+LISTINCREMENT)*sizeof(int));
if(!newbase)
{
printf("申请空间溢出\n");
return 0;
}
sq->elem=newbase;
sq->listsize+=LISTINCREMENT;
}
p=&(sq->elem[i-1]);//p指向第i位置的元素
q=&(sq->elem[sq->length-1]);//q指向最后一个元素
for(;q>=p;--q) *(q+1)=*q;
*p=a;
++sq->length;
return 1;
}
int ListDelete_Sq(SqList *sq,int i) //删除i位置上的值
{
int *p,*q;
if(i<1||i>sq->length) return 0;
p=&(sq->elem[i-1]);//p指向第i位置的元素
q=sq->elem+sq->length-1;//q指向最后一个元素
for(++p;p<=q;++p)
{
*(p-1)=*p;
}
--sq->length;
return 1;
}
void visit(SqList *sq)//输出数据
{
int i=1;
for(;i<=sq->length;i++)
{
int *p;
p=&sq->elem[i-1];
printf("%d",*p);
printf(" ");
}
}
void main()
{
int i=1,a=0,boo=1,number=0;
SqList s,*sq;
sq=&s;
InitList_Sq(sq);
printf("初始化空表\n");
printf("输入数据个数:\n");
scanf("%d",&number);
printf("输入%d个数据:",number);
printf("\n");
for(;i<=number;i++)
{
scanf("%d",&a);
if(boo=ListInsert_Sq(sq,i,a))
{
printf("---插入成功!---\n");
}
else
{
printf("---插入不成功,重新插入---!\n");
i=i-1;
}
}
printf("输出所有元素\n");
visit(sq);
printf("\n");
printf("输出删除的位置:");
scanf("%d",&a);
if(boo=ListDelete_Sq(sq,a))
{
printf("---数据删除成功!---\n");
}else
{
printf("---没有删除成功---\n");
}
printf("输出所有元素:\n");
visit(sq);
printf("\n");
printf("输出要显示数据的位置:");
scanf("%d",&a);
printf("输出%d位置数值\n",a);
if(a<0||a>sq->length)
{
printf("---输出位置的数据不存在---\n");
}
else
{
GetElem(sq,a);
}
}
以上是可直接运行的源程序
运行结果:
---申请空间成功---!
初始化空表
输入数据个数:
3
输入1个数据:3
---插入成功!---
输入2个数据;8
---插入成功!---
输入3个数据:5
---插入成功!---
输出所有元素:3 5 8
输出删除的位置:2
---数据删除成功!---
输出所有元素;3 8
输出要显示数据的位置:2
"输出2位置数值:8
#include<malloc.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct{
int * elem;
int length;
int listsize;
}SqList;
//SqList sq;
void InitList_Sq(SqList *sq) //初始化列表
{
sq->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
sq->length=0;
sq->listsize=LIST_INIT_SIZE;
printf("---申请空间成功---!\n");
}
void GetElem(SqList *sq,int i)//获取第i位置元素的值
{
int *p;
p=&(sq->elem[i-1]);
printf("%d",*p);
printf("\n");
}
int ListInsert_Sq(SqList *sq,int i,int a)//在i位置之前插入a
{
int *p,*q;
if(i<=0||i>sq->length+1)
{
printf("---位置不合法---!\n");
return 0;
}
if(sq->length>=sq->listsize)
{
int* newbase=(int *)realloc(sq->elem,(sq->listsize+LISTINCREMENT)*sizeof(int));
if(!newbase)
{
printf("申请空间溢出\n");
return 0;
}
sq->elem=newbase;
sq->listsize+=LISTINCREMENT;
}
p=&(sq->elem[i-1]);//p指向第i位置的元素
q=&(sq->elem[sq->length-1]);//q指向最后一个元素
for(;q>=p;--q) *(q+1)=*q;
*p=a;
++sq->length;
return 1;
}
int ListDelete_Sq(SqList *sq,int i) //删除i位置上的值
{
int *p,*q;
if(i<1||i>sq->length) return 0;
p=&(sq->elem[i-1]);//p指向第i位置的元素
q=sq->elem+sq->length-1;//q指向最后一个元素
for(++p;p<=q;++p)
{
*(p-1)=*p;
}
--sq->length;
return 1;
}
void visit(SqList *sq)//输出数据
{
int i=1;
for(;i<=sq->length;i++)
{
int *p;
p=&sq->elem[i-1];
printf("%d",*p);
printf(" ");
}
}
void main()
{
int i=1,a=0,boo=1,number=0;
SqList s,*sq;
sq=&s;
InitList_Sq(sq);
printf("初始化空表\n");
printf("输入数据个数:\n");
scanf("%d",&number);
printf("输入%d个数据:",number);
printf("\n");
for(;i<=number;i++)
{
scanf("%d",&a);
if(boo=ListInsert_Sq(sq,i,a))
{
printf("---插入成功!---\n");
}
else
{
printf("---插入不成功,重新插入---!\n");
i=i-1;
}
}
printf("输出所有元素\n");
visit(sq);
printf("\n");
printf("输出删除的位置:");
scanf("%d",&a);
if(boo=ListDelete_Sq(sq,a))
{
printf("---数据删除成功!---\n");
}else
{
printf("---没有删除成功---\n");
}
printf("输出所有元素:\n");
visit(sq);
printf("\n");
printf("输出要显示数据的位置:");
scanf("%d",&a);
printf("输出%d位置数值\n",a);
if(a<0||a>sq->length)
{
printf("---输出位置的数据不存在---\n");
}
else
{
GetElem(sq,a);
}
}
以上是可直接运行的源程序
运行结果:
---申请空间成功---!
初始化空表
输入数据个数:
3
输入1个数据:3
---插入成功!---
输入2个数据;8
---插入成功!---
输入3个数据:5
---插入成功!---
输出所有元素:3 5 8
输出删除的位置:2
---数据删除成功!---
输出所有元素;3 8
输出要显示数据的位置:2
"输出2位置数值:8
展开全部
#include<stdio.h>
#include<malloc.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct{
int * elem;
int length;
int listsize;
}SqList;
//SqList sq;
void InitList_Sq(SqList *sq) //初始化列表
{
sq->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
sq->length=0;
sq->listsize=LIST_INIT_SIZE;
printf("---申请空间成功---!\n");
}
void GetElem(SqList *sq,int i)//获取第i位置元素的值
{
int *p;
p=&(sq->elem[i-1]);
printf("%d",*p);
printf("\n");
}
int ListInsert_Sq(SqList *sq,int i,int a)//在i位置之前插入a
{
int *p,*q;
if(i<=0||i>sq->length+1)
{
printf("---位置不合法---!\n");
return 0;
}
if(sq->length>=sq->listsize)
{
int* newbase=(int *)realloc(sq->elem,(sq->listsize+LISTINCREMENT)*sizeof(int));
if(!newbase)
{
printf("申请空间溢出\n");
return 0;
}
sq->elem=newbase;
sq->listsize+=LISTINCREMENT;
}
p=&(sq->elem[i-1]);//p指向第i位置的元素
q=&(sq->elem[sq->length-1]);//q指向最后一个元素
for(;q>=p;--q) *(q+1)=*q;
*p=a;
++sq->length;
return 1;
}
int ListDelete_Sq(SqList *sq,int i) //删除i位置上的值
{
int *p,*q;
if(i<1||i>sq->length) return 0;
p=&(sq->elem[i-1]);//p指向第i位置的元素
q=sq->elem+sq->length-1;//q指向最后一个元素
for(++p;p<=q;++p)
{
*(p-1)=*p;
}
--sq->length;
return 1;
}
void visit(SqList *sq)//输出数据
{
int i=1;
for(;i<=sq->length;i++)
{
int *p;
p=&sq->elem[i-1];
printf("%d",*p);
printf(" ");
}
}
void main()
{
int i=1,a=0,boo=1,number=0;
SqList s,*sq;
sq=&s;
InitList_Sq(sq);
printf("初始化空表\n");
printf("输入数据个数:\n");
scanf("%d",&number);
printf("输入%d个数据:",number);
printf("\n");
for(;i<=number;i++)
{
scanf("%d",&a);
if(boo=ListInsert_Sq(sq,i,a))
{
printf("---插入成功!---\n");
}
else
{
printf("---插入不成功,重新插入---!\n");
i=i-1;
}
}
printf("输出所有元素\n");
visit(sq);
printf("\n");
printf("输出删除的位置:");
scanf("%d",&a);
if(boo=ListDelete_Sq(sq,a))
{
printf("---数据删除成功!---\n");
}else
{
printf("---没有删除成功---\n");
}
printf("输出所有元素:\n");
visit(sq);
printf("\n");
printf("输出要显示数据的位置:");
scanf("%d",&a);
printf("输出%d位置数值\n",a);
if(a<0||a>sq->length)
{
printf("---输出位置的数据不存在---\n");
}
else
{
GetElem(sq,a);
}
}
以上是可直接运行的源程序
运行结果:
---申请空间成功---!
初始化空表
输入数据个数:
3
输入1个数据:3
---插入成功!---
输入2个数据;8
---插入成功!---
输入3个数据:5
---插入成功!---
输出所有元素:3 5 8
输出删除的位置:2
---数据删除成功!---
输出所有元素;3 8
输出要显示数据的位置:2
"输出2位置数值:8
#include<malloc.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct{
int * elem;
int length;
int listsize;
}SqList;
//SqList sq;
void InitList_Sq(SqList *sq) //初始化列表
{
sq->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
sq->length=0;
sq->listsize=LIST_INIT_SIZE;
printf("---申请空间成功---!\n");
}
void GetElem(SqList *sq,int i)//获取第i位置元素的值
{
int *p;
p=&(sq->elem[i-1]);
printf("%d",*p);
printf("\n");
}
int ListInsert_Sq(SqList *sq,int i,int a)//在i位置之前插入a
{
int *p,*q;
if(i<=0||i>sq->length+1)
{
printf("---位置不合法---!\n");
return 0;
}
if(sq->length>=sq->listsize)
{
int* newbase=(int *)realloc(sq->elem,(sq->listsize+LISTINCREMENT)*sizeof(int));
if(!newbase)
{
printf("申请空间溢出\n");
return 0;
}
sq->elem=newbase;
sq->listsize+=LISTINCREMENT;
}
p=&(sq->elem[i-1]);//p指向第i位置的元素
q=&(sq->elem[sq->length-1]);//q指向最后一个元素
for(;q>=p;--q) *(q+1)=*q;
*p=a;
++sq->length;
return 1;
}
int ListDelete_Sq(SqList *sq,int i) //删除i位置上的值
{
int *p,*q;
if(i<1||i>sq->length) return 0;
p=&(sq->elem[i-1]);//p指向第i位置的元素
q=sq->elem+sq->length-1;//q指向最后一个元素
for(++p;p<=q;++p)
{
*(p-1)=*p;
}
--sq->length;
return 1;
}
void visit(SqList *sq)//输出数据
{
int i=1;
for(;i<=sq->length;i++)
{
int *p;
p=&sq->elem[i-1];
printf("%d",*p);
printf(" ");
}
}
void main()
{
int i=1,a=0,boo=1,number=0;
SqList s,*sq;
sq=&s;
InitList_Sq(sq);
printf("初始化空表\n");
printf("输入数据个数:\n");
scanf("%d",&number);
printf("输入%d个数据:",number);
printf("\n");
for(;i<=number;i++)
{
scanf("%d",&a);
if(boo=ListInsert_Sq(sq,i,a))
{
printf("---插入成功!---\n");
}
else
{
printf("---插入不成功,重新插入---!\n");
i=i-1;
}
}
printf("输出所有元素\n");
visit(sq);
printf("\n");
printf("输出删除的位置:");
scanf("%d",&a);
if(boo=ListDelete_Sq(sq,a))
{
printf("---数据删除成功!---\n");
}else
{
printf("---没有删除成功---\n");
}
printf("输出所有元素:\n");
visit(sq);
printf("\n");
printf("输出要显示数据的位置:");
scanf("%d",&a);
printf("输出%d位置数值\n",a);
if(a<0||a>sq->length)
{
printf("---输出位置的数据不存在---\n");
}
else
{
GetElem(sq,a);
}
}
以上是可直接运行的源程序
运行结果:
---申请空间成功---!
初始化空表
输入数据个数:
3
输入1个数据:3
---插入成功!---
输入2个数据;8
---插入成功!---
输入3个数据:5
---插入成功!---
输出所有元素:3 5 8
输出删除的位置:2
---数据删除成功!---
输出所有元素;3 8
输出要显示数据的位置:2
"输出2位置数值:8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 1000
typedef int DataType;
typedef struct node{
DataType data[MAXSIZE];
int length;
}SeqList,*PSeqList;
PSeqList Init_SeqList(void)
{
PSeqList SeqListPoint;
SeqListPoint=(PSeqList)malloc(sizeof(SeqList));
if(SeqListPoint)
SeqListPoint->length=0;
return SeqListPoint;
}
int Insert_SeqList(PSeqList SeqListPoint,int i,DataType x)
{
int j;
if(!SeqListPoint)
{
printf("表不存在");
return -2;
}
if(SeqListPoint->length>=MAXSIZE)
{
printf("表溢出");
return -1;
}
if(i<1||i>SeqListPoint->length+1)
{
printf("插入位置不合法");
return 0;
}
for(j=SeqListPoint->length-1;j>=i-1;j--)
SeqListPoint->data[j+1]=SeqListPoint->data[j];
SeqListPoint->data[i-1]=x;
SeqListPoint->length++;
return 1;
}
int Delete_seq(PSeqList SeqListPoint,int t,int x)
{
int i,j;
if(!SeqListPoint)
{
printf("表不存在");
return -1;
}
switch(t)
{
case 1:
for(i=0;i<SeqListPoint->length;i++)
if(x==SeqListPoint->data[i])
{
for(j=i;j<SeqListPoint->length;j++)
SeqListPoint->data[j]=SeqListPoint->data[j+1];
printf("你已经成功删除元素%d\n",x);
SeqListPoint->length--;
return 1;
}
printf("该表中不存在该元素!");
return 0;
case 2:
if(x<1||x>SeqListPoint->length)
{
printf("删除位置不合法!\n");
return 0;
}
for(i=x;i<SeqListPoint->length;i++)
SeqListPoint->data[i-1]=SeqListPoint->data[i];
SeqListPoint->length--;
printf("你已经成功删除%d位置的元素\n",x);
break;
default:
break;
}
return 0;
}
int Location_SeqList(PSeqList SeqListPoint,DataType x)
{
int i=0;
if(!SeqListPoint)
{
printf("表不存在");
return -1;
}
while(i<SeqListPoint->length&&SeqListPoint->data[i]!=x)
i++;
if(i>=SeqListPoint->length)
return 0;
else
return (i+1);
}
int Print_SeqList(PSeqList SeqListPoint)
{
int i;
if(!SeqListPoint)
{
printf("表不存在");
return -1;
}
if(!SeqListPoint->length)
{
printf("表中没有元素!!!\n");
return 0;
}
printf("表中元素:\n");
for(i=0;i<SeqListPoint->length;i++)
printf("%d ",SeqListPoint->data[i]);
return 1;
}
void Destroy_SeqList(PSeqList *SeqListPoint)
{
if(*SeqListPoint)
free(*SeqListPoint);
*SeqListPoint=NULL;
}
int main()
{
PSeqList SeqListPoint;
int n,i,j,x,num,flag=0,log=0;
char ch;
while(1)
{
printf("***********线性表**********\n");
printf(" [1]创建一个线性表 \n");
printf(" [2]在表中插入记录 \n");
printf(" [3]删除表中的记录 \n");
printf(" [4]检索表中的元素 \n");
printf(" [5]查看表中的元素 \n");
printf(" [6]统计表中元素的个数 \n");
printf(" [7]退出 \n");
printf("***************************\n");
printf("请输入操作数:");
scanf("%d",&num);
switch(num)
{
case 1:
system("cls");
if(flag)
{
printf("你已经创建了一个表!\n");
break;
}
SeqListPoint=Init_SeqList();
printf("你已经创建了一个表!\n");
flag++;
break;
case 2:
system("cls");
if(!flag)
{
printf("请先创建一个表!");
break;
}
printf("请选择插入位置\n");
printf("[1]直接插入\n");
printf("[2]选择插入\n");
printf("请输入操作数:");
scanf("%d",&num);
switch(num)
{
case 1:
system("cls");
printf("请在表中插入n个记录:\n");
printf("n=");
scanf("%d",&n);
j=SeqListPoint->length;
for(i=j;i<j+n;i++)
{
scanf("%d",&x);
Insert_SeqList(SeqListPoint,i+1,x);
}
log++;
break;
case 2:
system("cls");
printf("请输入插入位置和元素:\n");
scanf("%d %d",&i,&x);
Insert_SeqList(SeqListPoint,i,x);
log++;
break;
default:
printf("您的输入有误!!!");
}
break;
case 3:
if(!flag)
{
printf("请先创建一个表!\n");
break;
}
if(!log)
{
printf("请先插入元素!\n");
break;
}
printf("请选择按何种方式删除表中元素\n");
printf("[1]按元素删除\n");
printf("[2]按序号删除\n");
scanf("%d",&num);
switch(num)
{
case 1:
printf("请输入删除的元素:\n");
scanf("%d",&x);
Delete_seq(SeqListPoint,num,x);
break;
case 2:
printf("请输入删除元素的序号:\n");
scanf("%d",&x);
Delete_seq(SeqListPoint,num,x);
break;
default:
printf("您的输入有误!!!");
}
break;
case 4:
if(!flag)
{
printf("请先创建一个表!\n");
break;
}
if(!log)
{
printf("请先插入元素!\n");
break;
}
printf("请输入您要检索的元素:");
scanf("%d",&x);
if(Location_SeqList(SeqListPoint,x))
printf("该元素位于%d位置",Location_SeqList(SeqListPoint,x));
else
printf("表中没有元素%d\n",x);
break;
case 5:
if(!flag)
{
printf("请先创建一个表!\n");
break;
}
if(!log)
{
printf("请先插入元素!\n");
break;
}
Print_SeqList(SeqListPoint);
break;
case 6:
if(!flag)
{
printf("请先创建一个表!\n");
break;
}
printf("表中元素个数为:%d\n",SeqListPoint->length);
break;
case 7:
if(flag)
{
Destroy_SeqList(&SeqListPoint);
return 0;
}
return 0;
default:
printf("您的输入有误!!!");
}
printf("\n按Enter键继续");
scanf("%c",&ch);
scanf("%c",&ch);
system("cls");
}
}
程序运行结果截图如下:
主画面:
选择操作数1,创建一个线性表:
按Enter键继续,返回主画面,
选择操作数2,在表中插入记录,
选择插入位置,选择1,直接插入,
输入n=5,插入5个记录,
按Enter键继续,返回主画面,选择操作数【3】删除表中的记录,选择【1】按元素删除,输入删除的元素55如下,
按Enter键继续,返回主画面,选择操作数【5】查看表中的元素
记录55已经成功删除
按Enter键继续,返回主画面,选择操作数【3】删除表中的记录,选择【1】按元素删除,输入删除的元素22如下,
表中不存在记录22,所以删除失败。
截过图,粘贴不进去,如果你把分给我,我把代码和截图发给你
#include<stdlib.h>
#define MAXSIZE 1000
typedef int DataType;
typedef struct node{
DataType data[MAXSIZE];
int length;
}SeqList,*PSeqList;
PSeqList Init_SeqList(void)
{
PSeqList SeqListPoint;
SeqListPoint=(PSeqList)malloc(sizeof(SeqList));
if(SeqListPoint)
SeqListPoint->length=0;
return SeqListPoint;
}
int Insert_SeqList(PSeqList SeqListPoint,int i,DataType x)
{
int j;
if(!SeqListPoint)
{
printf("表不存在");
return -2;
}
if(SeqListPoint->length>=MAXSIZE)
{
printf("表溢出");
return -1;
}
if(i<1||i>SeqListPoint->length+1)
{
printf("插入位置不合法");
return 0;
}
for(j=SeqListPoint->length-1;j>=i-1;j--)
SeqListPoint->data[j+1]=SeqListPoint->data[j];
SeqListPoint->data[i-1]=x;
SeqListPoint->length++;
return 1;
}
int Delete_seq(PSeqList SeqListPoint,int t,int x)
{
int i,j;
if(!SeqListPoint)
{
printf("表不存在");
return -1;
}
switch(t)
{
case 1:
for(i=0;i<SeqListPoint->length;i++)
if(x==SeqListPoint->data[i])
{
for(j=i;j<SeqListPoint->length;j++)
SeqListPoint->data[j]=SeqListPoint->data[j+1];
printf("你已经成功删除元素%d\n",x);
SeqListPoint->length--;
return 1;
}
printf("该表中不存在该元素!");
return 0;
case 2:
if(x<1||x>SeqListPoint->length)
{
printf("删除位置不合法!\n");
return 0;
}
for(i=x;i<SeqListPoint->length;i++)
SeqListPoint->data[i-1]=SeqListPoint->data[i];
SeqListPoint->length--;
printf("你已经成功删除%d位置的元素\n",x);
break;
default:
break;
}
return 0;
}
int Location_SeqList(PSeqList SeqListPoint,DataType x)
{
int i=0;
if(!SeqListPoint)
{
printf("表不存在");
return -1;
}
while(i<SeqListPoint->length&&SeqListPoint->data[i]!=x)
i++;
if(i>=SeqListPoint->length)
return 0;
else
return (i+1);
}
int Print_SeqList(PSeqList SeqListPoint)
{
int i;
if(!SeqListPoint)
{
printf("表不存在");
return -1;
}
if(!SeqListPoint->length)
{
printf("表中没有元素!!!\n");
return 0;
}
printf("表中元素:\n");
for(i=0;i<SeqListPoint->length;i++)
printf("%d ",SeqListPoint->data[i]);
return 1;
}
void Destroy_SeqList(PSeqList *SeqListPoint)
{
if(*SeqListPoint)
free(*SeqListPoint);
*SeqListPoint=NULL;
}
int main()
{
PSeqList SeqListPoint;
int n,i,j,x,num,flag=0,log=0;
char ch;
while(1)
{
printf("***********线性表**********\n");
printf(" [1]创建一个线性表 \n");
printf(" [2]在表中插入记录 \n");
printf(" [3]删除表中的记录 \n");
printf(" [4]检索表中的元素 \n");
printf(" [5]查看表中的元素 \n");
printf(" [6]统计表中元素的个数 \n");
printf(" [7]退出 \n");
printf("***************************\n");
printf("请输入操作数:");
scanf("%d",&num);
switch(num)
{
case 1:
system("cls");
if(flag)
{
printf("你已经创建了一个表!\n");
break;
}
SeqListPoint=Init_SeqList();
printf("你已经创建了一个表!\n");
flag++;
break;
case 2:
system("cls");
if(!flag)
{
printf("请先创建一个表!");
break;
}
printf("请选择插入位置\n");
printf("[1]直接插入\n");
printf("[2]选择插入\n");
printf("请输入操作数:");
scanf("%d",&num);
switch(num)
{
case 1:
system("cls");
printf("请在表中插入n个记录:\n");
printf("n=");
scanf("%d",&n);
j=SeqListPoint->length;
for(i=j;i<j+n;i++)
{
scanf("%d",&x);
Insert_SeqList(SeqListPoint,i+1,x);
}
log++;
break;
case 2:
system("cls");
printf("请输入插入位置和元素:\n");
scanf("%d %d",&i,&x);
Insert_SeqList(SeqListPoint,i,x);
log++;
break;
default:
printf("您的输入有误!!!");
}
break;
case 3:
if(!flag)
{
printf("请先创建一个表!\n");
break;
}
if(!log)
{
printf("请先插入元素!\n");
break;
}
printf("请选择按何种方式删除表中元素\n");
printf("[1]按元素删除\n");
printf("[2]按序号删除\n");
scanf("%d",&num);
switch(num)
{
case 1:
printf("请输入删除的元素:\n");
scanf("%d",&x);
Delete_seq(SeqListPoint,num,x);
break;
case 2:
printf("请输入删除元素的序号:\n");
scanf("%d",&x);
Delete_seq(SeqListPoint,num,x);
break;
default:
printf("您的输入有误!!!");
}
break;
case 4:
if(!flag)
{
printf("请先创建一个表!\n");
break;
}
if(!log)
{
printf("请先插入元素!\n");
break;
}
printf("请输入您要检索的元素:");
scanf("%d",&x);
if(Location_SeqList(SeqListPoint,x))
printf("该元素位于%d位置",Location_SeqList(SeqListPoint,x));
else
printf("表中没有元素%d\n",x);
break;
case 5:
if(!flag)
{
printf("请先创建一个表!\n");
break;
}
if(!log)
{
printf("请先插入元素!\n");
break;
}
Print_SeqList(SeqListPoint);
break;
case 6:
if(!flag)
{
printf("请先创建一个表!\n");
break;
}
printf("表中元素个数为:%d\n",SeqListPoint->length);
break;
case 7:
if(flag)
{
Destroy_SeqList(&SeqListPoint);
return 0;
}
return 0;
default:
printf("您的输入有误!!!");
}
printf("\n按Enter键继续");
scanf("%c",&ch);
scanf("%c",&ch);
system("cls");
}
}
程序运行结果截图如下:
主画面:
选择操作数1,创建一个线性表:
按Enter键继续,返回主画面,
选择操作数2,在表中插入记录,
选择插入位置,选择1,直接插入,
输入n=5,插入5个记录,
按Enter键继续,返回主画面,选择操作数【3】删除表中的记录,选择【1】按元素删除,输入删除的元素55如下,
按Enter键继续,返回主画面,选择操作数【5】查看表中的元素
记录55已经成功删除
按Enter键继续,返回主画面,选择操作数【3】删除表中的记录,选择【1】按元素删除,输入删除的元素22如下,
表中不存在记录22,所以删除失败。
截过图,粘贴不进去,如果你把分给我,我把代码和截图发给你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
真的好简单。。 是课设么。。帮人写过C++的 参考下下 一点都不会就只好等其他人给你答案了。。
#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;
#define maxsize 100
typedef struct
{
char name[20];
char num[4];
char sex[10];
int age;
char tel[11];
}datatype;
typedef struct
{
datatype data[maxsize];
int last;
}sqlist;
void intput(sqlist &L, int i)
{
cout << "输入第" << i + 1 << "个学生的信息" << endl;
cout << "名字\t学号\t性别\t年龄\t电话(空格隔开)" << endl;
cin >> L.data[i].name >> L.data[i].num >> L.data[i].sex
>> L.data[i].age >> L.data[i].tel;
}
void output(const sqlist &L, int i)
{
cout << "名字\t学号\t性别\t年龄\t电话" << endl;
cout << left << setw(8) << L.data[i].name
<< setw(8) << L.data[i].num << setw(8) << L.data[i].sex
<< setw(8) << L.data[i].age << setw(8) << L.data[i].tel << endl;
}
void CreateList(sqlist &L, int n) //建表
{
L.last = n;
for (int i = 0; i < n; ++i)
{
intput(L, i);
}
}
void InsertList(sqlist &L, int n) //插入
{
if (n < 1 || n > L.last + 1)
{
cout << "插入位置非法" << endl;
}
else
{
for (int i = L.last + 1; i > n; --i)
{
strcpy(L.data[i].name, L.data[i-1].name);
strcpy(L.data[i].num, L.data[i-1].num);
strcpy(L.data[i].sex, L.data[i-1].sex);
L.data[i].age = L.data[i-1].age;
strcpy(L.data[i].tel, L.data[i-1].tel);
}
intput(L, n - 1);
++L.last;
}
}
void DeleteList(sqlist &L, int n) //删除
{
if (n < 1 || n > L.last)
{
cout << "删除位置非法" << endl;
}
else
{
for (int i = n; i < L.last; ++i)
{
strcpy(L.data[i].name, L.data[i+1].name);
strcpy(L.data[i].num, L.data[i+1].num);
strcpy(L.data[i].sex, L.data[i+1].sex);
L.data[i].age = L.data[i+1].age;
strcpy(L.data[i].tel, L.data[i+1].tel);
}
--L.last;
}
}
void SearchList(const sqlist &L) //查找
{
int choose;
char temp_name[20] = {0}, temp_num[4] = {0};
cout << "1.按编号查找\n2.按名字查找\n请选择:";
cin >> choose;
if (choose == 1)
{
cout << "请输入编号:";
cin >> temp_num;
}
else if (choose == 2)
{
cout << "请输入名字:";
cin >> temp_name;
}
else
{
cout << "输入有误" << endl;
return;
}
for (int i = 0; i < L.last; ++i)
{
if (choose == 1 && strcmp(temp_num, L.data[i].num) == 0)
{
cout << "查找成功" << endl;
cout << "学号为" << temp_num << "的学生信息如下:" << endl;
output(L, i);
return;
}
if (choose == 2 && strcmp(temp_name, L.data[i].name) == 0)
{
cout << "查找成功" << endl;
cout << "名字为" << temp_name << "的学生信息如下:" << endl;
output(L, i);
return;
}
}
cout << "没有这样的学生信息" << endl;
}
void ReadList(const sqlist &L, int n) //读表元
{
if (n < 1 || n > L.last)
{
cout << "该学生信息不存在" << endl;
}
else
{
cout << "读取成功" << endl;
cout << "第" << n << "个学生的信息:" << endl;
output(L, n - 1);
}
}
void PrintList(const sqlist &L) //输出
{
if (L.last == 0)
{
cout << "顺序表为空" << endl;
}
else
{
for (int i = 0; i < L.last; ++i)
{
cout << "第" << i + 1 << "个学生的信息:" << endl;
output(L, i);
}
}
}
int main()
{
sqlist L = {0};
int choose, n;
while (true)
{
cout << "1.建表\n2.插入\n3.删除\n4.按学号或者名字查找\n5.读表元\n6.显示全部信息\n7.退出\n";
cin >> choose;
switch (choose)
{
case 1:
{
cout << "建立学生信息个数:";
cin >> n;
CreateList(L, n);
}
break;
case 2:
{
cout << "插入学生信息的位置:" << 1 << "--" << L.last + 1 << endl;
cin >> n;
InsertList(L, n);
}
break;
case 3:
{
cout << "删除学生信息的位置:" << 1 << "--" << L.last << endl;
cin >> n;
DeleteList(L, n);
}
break;
case 4: SearchList(L); break;
case 5:
{
cout << "读取学生信息的位置:" << 1 << "--" << L.last << endl;
cin >> n;
ReadList(L, n);
}
break;
case 6: PrintList(L); break;
case 7: exit(0); break;
default: cout << "输入有误" << endl; break;
}
system("pause");
system("cls");
}
return 0;
}
#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;
#define maxsize 100
typedef struct
{
char name[20];
char num[4];
char sex[10];
int age;
char tel[11];
}datatype;
typedef struct
{
datatype data[maxsize];
int last;
}sqlist;
void intput(sqlist &L, int i)
{
cout << "输入第" << i + 1 << "个学生的信息" << endl;
cout << "名字\t学号\t性别\t年龄\t电话(空格隔开)" << endl;
cin >> L.data[i].name >> L.data[i].num >> L.data[i].sex
>> L.data[i].age >> L.data[i].tel;
}
void output(const sqlist &L, int i)
{
cout << "名字\t学号\t性别\t年龄\t电话" << endl;
cout << left << setw(8) << L.data[i].name
<< setw(8) << L.data[i].num << setw(8) << L.data[i].sex
<< setw(8) << L.data[i].age << setw(8) << L.data[i].tel << endl;
}
void CreateList(sqlist &L, int n) //建表
{
L.last = n;
for (int i = 0; i < n; ++i)
{
intput(L, i);
}
}
void InsertList(sqlist &L, int n) //插入
{
if (n < 1 || n > L.last + 1)
{
cout << "插入位置非法" << endl;
}
else
{
for (int i = L.last + 1; i > n; --i)
{
strcpy(L.data[i].name, L.data[i-1].name);
strcpy(L.data[i].num, L.data[i-1].num);
strcpy(L.data[i].sex, L.data[i-1].sex);
L.data[i].age = L.data[i-1].age;
strcpy(L.data[i].tel, L.data[i-1].tel);
}
intput(L, n - 1);
++L.last;
}
}
void DeleteList(sqlist &L, int n) //删除
{
if (n < 1 || n > L.last)
{
cout << "删除位置非法" << endl;
}
else
{
for (int i = n; i < L.last; ++i)
{
strcpy(L.data[i].name, L.data[i+1].name);
strcpy(L.data[i].num, L.data[i+1].num);
strcpy(L.data[i].sex, L.data[i+1].sex);
L.data[i].age = L.data[i+1].age;
strcpy(L.data[i].tel, L.data[i+1].tel);
}
--L.last;
}
}
void SearchList(const sqlist &L) //查找
{
int choose;
char temp_name[20] = {0}, temp_num[4] = {0};
cout << "1.按编号查找\n2.按名字查找\n请选择:";
cin >> choose;
if (choose == 1)
{
cout << "请输入编号:";
cin >> temp_num;
}
else if (choose == 2)
{
cout << "请输入名字:";
cin >> temp_name;
}
else
{
cout << "输入有误" << endl;
return;
}
for (int i = 0; i < L.last; ++i)
{
if (choose == 1 && strcmp(temp_num, L.data[i].num) == 0)
{
cout << "查找成功" << endl;
cout << "学号为" << temp_num << "的学生信息如下:" << endl;
output(L, i);
return;
}
if (choose == 2 && strcmp(temp_name, L.data[i].name) == 0)
{
cout << "查找成功" << endl;
cout << "名字为" << temp_name << "的学生信息如下:" << endl;
output(L, i);
return;
}
}
cout << "没有这样的学生信息" << endl;
}
void ReadList(const sqlist &L, int n) //读表元
{
if (n < 1 || n > L.last)
{
cout << "该学生信息不存在" << endl;
}
else
{
cout << "读取成功" << endl;
cout << "第" << n << "个学生的信息:" << endl;
output(L, n - 1);
}
}
void PrintList(const sqlist &L) //输出
{
if (L.last == 0)
{
cout << "顺序表为空" << endl;
}
else
{
for (int i = 0; i < L.last; ++i)
{
cout << "第" << i + 1 << "个学生的信息:" << endl;
output(L, i);
}
}
}
int main()
{
sqlist L = {0};
int choose, n;
while (true)
{
cout << "1.建表\n2.插入\n3.删除\n4.按学号或者名字查找\n5.读表元\n6.显示全部信息\n7.退出\n";
cin >> choose;
switch (choose)
{
case 1:
{
cout << "建立学生信息个数:";
cin >> n;
CreateList(L, n);
}
break;
case 2:
{
cout << "插入学生信息的位置:" << 1 << "--" << L.last + 1 << endl;
cin >> n;
InsertList(L, n);
}
break;
case 3:
{
cout << "删除学生信息的位置:" << 1 << "--" << L.last << endl;
cin >> n;
DeleteList(L, n);
}
break;
case 4: SearchList(L); break;
case 5:
{
cout << "读取学生信息的位置:" << 1 << "--" << L.last << endl;
cin >> n;
ReadList(L, n);
}
break;
case 6: PrintList(L); break;
case 7: exit(0); break;
default: cout << "输入有误" << endl; break;
}
system("pause");
system("cls");
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我用C++写的一个线性表的类,原意是想为自己设计一个专用的库,以后方便使用,但是你要求用C语言的话,我就没时间专门为你写额...不过你想要的话,我可以把我写的那个给你看,作为参考也行!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |