数据结构上机试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构上机试题
一、顺序表的操作
(1)插入元素操作:将新元素x插入到顺序表a中第i个位置。
(2)删除元素操作:删除顺序表a中第i个元素。#include
#include
#define MAX 100;
typedef struct{
int data[100];
int length;
}sqlist;
void init(sqlist &a)//线性表初始化
{
a.length=0;
}
void insert(sqlist &a ,int i,int x)// 插入元素操作
{
int j;
if(i<0||i>a.length+1||a.length==100)
;
else{
for(j=a.length+1;j>i;j--)
a.data[j]=a.data[j-1];
a.data[j]=x;
a.length++;
}
}
void deleted(sqlist &a ,int i)// 删除元素操作
{
int j;
if(i<0&&i>a.length)
;
else
{
for(j=i;j a.data[j]=a.data[j+1]; a.length--; } } void main() { sqlist a;//线性表为a int i,e,x,n,j,s;//i插入位置,e动态建线性表要用,X插 入元素,n表长 init(a);//构造一个空表 cout<<"输入表长n: "; cin>>n; cout<<"输入表长为"< for(j=0;j { cin>>e; insert(a,j,e); } cout<<"插入前: "; for(j=0;j cout< cout<<"输入要插入位置i: "; cin>>i; cout<<"输入要插入的元素x: "; cin>>x; cout<<"打算在第"< cout<<"插入后结果: "; for(j=0;j cout< cout<<"输入要删除的位置s: "; cin>>s; deleted(a,s-1);//由于从0开始,要构造显示从一开始,所以减1 cout<<"删除后结果: "; for(j=0;j cout< } 二、单链表的操作 (1)创建一个带头结点的单链表; (2)插入元素操作:将新元素x插入到单链表中第i 个元素之后; (3)删除元素操作:删除单链表中值为x的元素;#include #include typedef struct LNode { int data; struct LNode *next; }LNode; //创建一个带头结点的长度长度长度为n的链表L;void createlist(LNode *&L ,int n) { int i; LNode *p; L=(LNode *)malloc(sizeof(LNode)); L->next=NULL; for(i=1;i<=n;i++) { p=(LNode *)malloc(sizeof(LNode)); cout<<"请输入链表第"< cin>>p->data; p->next=L->next; L->next=p; } } //插入元素操作:将新元素x插入到单链表L中第i 个元素之后 void insert(LNode *&L ,int i,int x) { int j=0; LNode *p,*q; p=L; while(p->next!=NULL) { j++; if(j==i) { q=(LNode *)malloc(sizeof(LNode));//找到位置 q->data=x;//放入数据 q->next=p->next; p->next=q; break; } p=p->next; } if(p->next==NULL) { q=(LNode *)malloc(sizeof(LNode));//找到位置 q->data=x;//放入数据 q->next=p->next; p->next=q; } } //删除元素操作:删除单链表中值为x的元素;void deleted(LNode *&L ,int x) { LNode *p,*q; p=L; while(p->next!=NULL) { if(p->next->data==x) { q=p->next; p->next=p->next->next; free(q); } p=p->next; } } void print(LNode *&L) {