数据结构上机试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

{

相关文档
最新文档