
数据结构,线性表--试题 35
要求:1.创建一个空的顺序线性表2.能输入,输出元素3.在顺序线性表L中第i个位置差入新的元素e4.在顺序线性表L中删除第i个元素,并用e返回其值请写出完整C语言代码,能...
要求:1.创建一个空的顺序线性表
2.能输入,输出元素
3.在顺序线性表L中第i个位置差入新的元素e
4.在顺序线性表L中删除第i个元素,并用e返回其值
请写出完整C语言代码,能在TC上运行,实现上面的功能. 展开
2.能输入,输出元素
3.在顺序线性表L中第i个位置差入新的元素e
4.在顺序线性表L中删除第i个元素,并用e返回其值
请写出完整C语言代码,能在TC上运行,实现上面的功能. 展开
1个回答
展开全部
#include "stdio.h"
#include <malloc.h>
#define NULL 0
struct Listdata{
int data;
struct Listdata *next;
}*ldata;
struct List{
struct Listdata *top;
int i;
}*mlist;
struct List * creatList(){
struct List *head=(struct List *)malloc(sizeof(struct List ));
head->top=NULL;
head->i=0;
return head;
}
int addData(struct List *mlist,int data){
struct Listdata *p=(struct Listdata*)malloc(sizeof(struct Listdata));
struct Listdata *p1=mlist->top;
p->data=data;
p->next=NULL;
if(mlist->i==0){
mlist->top=p;
}
else{
for(int i=1;i<mlist->i;++i)p1=p1->next;
p1->next=p;
}
++mlist->i;
return 0;
}
int print(struct List *mlist){
for(struct Listdata *p=mlist->top;p!=NULL;p=p->next)
printf("%d\n",p->data);
return 0;
}
int insert(struct List *mlist,int data, int i){
struct Listdata *p=mlist->top;
struct Listdata *p1=(struct Listdata*)malloc(sizeof(struct Listdata));
p1->data=data;
if(i>mlist->i){
addData(mlist,data);
++mlist->i;
return 0;
}
if(i==1){
p1->next=mlist->top;
mlist->top=p1;
++mlist->i;
return 0;
}
for(int j=2;j<i;++j)p=p->next;
p1->next=p->next;
p->next=p1;
++mlist->i;
return 0;
}
int del(struct List *mlist,int i){
struct Listdata *p1=mlist->top;
struct Listdata *p;
int e;
if(i>mlist->i)return 0;
if(i==1){
mlist->top=mlist->top->next;
--mlist->i;
e=p1->data;
free(p1);
return 0;
}
for(int j=2;j<i;++j)p1=p1->next;
p=p1->next;
p1->next=p->next;
e=p->data;
free(p);
--mlist->i;
return e;
}
#include <malloc.h>
#define NULL 0
struct Listdata{
int data;
struct Listdata *next;
}*ldata;
struct List{
struct Listdata *top;
int i;
}*mlist;
struct List * creatList(){
struct List *head=(struct List *)malloc(sizeof(struct List ));
head->top=NULL;
head->i=0;
return head;
}
int addData(struct List *mlist,int data){
struct Listdata *p=(struct Listdata*)malloc(sizeof(struct Listdata));
struct Listdata *p1=mlist->top;
p->data=data;
p->next=NULL;
if(mlist->i==0){
mlist->top=p;
}
else{
for(int i=1;i<mlist->i;++i)p1=p1->next;
p1->next=p;
}
++mlist->i;
return 0;
}
int print(struct List *mlist){
for(struct Listdata *p=mlist->top;p!=NULL;p=p->next)
printf("%d\n",p->data);
return 0;
}
int insert(struct List *mlist,int data, int i){
struct Listdata *p=mlist->top;
struct Listdata *p1=(struct Listdata*)malloc(sizeof(struct Listdata));
p1->data=data;
if(i>mlist->i){
addData(mlist,data);
++mlist->i;
return 0;
}
if(i==1){
p1->next=mlist->top;
mlist->top=p1;
++mlist->i;
return 0;
}
for(int j=2;j<i;++j)p=p->next;
p1->next=p->next;
p->next=p1;
++mlist->i;
return 0;
}
int del(struct List *mlist,int i){
struct Listdata *p1=mlist->top;
struct Listdata *p;
int e;
if(i>mlist->i)return 0;
if(i==1){
mlist->top=mlist->top->next;
--mlist->i;
e=p1->data;
free(p1);
return 0;
}
for(int j=2;j<i;++j)p1=p1->next;
p=p1->next;
p1->next=p->next;
e=p->data;
free(p);
--mlist->i;
return e;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询