数据结构,线性表--试题 35

要求:1.创建一个空的顺序线性表2.能输入,输出元素3.在顺序线性表L中第i个位置差入新的元素e4.在顺序线性表L中删除第i个元素,并用e返回其值请写出完整C语言代码,能... 要求:1.创建一个空的顺序线性表
2.能输入,输出元素
3.在顺序线性表L中第i个位置差入新的元素e
4.在顺序线性表L中删除第i个元素,并用e返回其值

请写出完整C语言代码,能在TC上运行,实现上面的功能.
展开
 我来答
百度网友c11135b1b
2007-03-27 · 超过21用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:0
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式