数据结构习题!!!!帮我用C语言写一个删除操作的算法!按照图中相关代码写!最好运行成功后再发给我!谢谢!
我运行成功了吗?
你运行成功了吗?
追答xianshi(head, 4);//显示插入后新链表 //插入改为删除
跟书本的代码不太一样哎
还在吗?看得到我发的图片吗
追答一开始发的吗 看得到
追问那你看的清楚的话为何不用图中关键代码~老师说不跟书本一样不算数~……你写的是正确的但是跟我想要的代码不一样
给我点时间改改
追问嗯!谢谢~最好快点哦哦~我要交了
追答#include
#include
#define NEW (LB *)malloc(sizeof(LB))
#define ERROR 0
#define OK L
#define ElemType int
typedef struct Lianb{
int data;
struct Lianb *next;
}LB;// 创建链表结构体
LB *chuangjian(int n)
{
LB *Head,*p;
Head=p=NEW;
for(int i=0;idata);
p->next=NEW;
p=p->next;
}
p=0;
return Head;
}// 创建链表
void xianshi(LB *Head,int n)
{
printf("head->");
LB *p=Head;
for(int i=0;i",p->data);
p=p->next;
} printf("end\n");
}// 显示链表
LB *shanchu(LB *L, int i, ElemType *e){
LB *p, *r;
int k = 0;
p = L;
while (p->next != NULL && k next;
k += 1;
}
if (k != i - 1) {
printf("删除节点的位置不合理!");
return ERROR;
}
r = p->next;
p->next = p->next->next;
e = &r->data;
free(r);
return OK;
}// 删除
int main()
{
LB *head;
head=chuangjian(5);// 创建链表
xianshi(head,5);// 显示链表
int *e = 0;
shanchu(head, 3, e);
xianshi(head, 4);
free(head);
return 0;
}
你运行过了吗
追答嗯嗯 刚才不行我又改了下现在好了
追问???那第二个代码可以成功运行?
追答是啊
追问还有空吗~有空的话还可以帮写一个串插入函数吗~没空的话我就算了我就直接采纳你了~
追答我有插入代码但是不是又要用你书本上的。。。
追问对啊~要用书上的~否则无效~老师要求的~你没空的话就不麻烦你了~有空的话我就发图片给你~反正我一定会采纳你的放心吧
追答你把图发过来把 我看看容不容易改
追问这个太烦了。。。
LB *shanchu(LB *L, int i, ElemType *e){
LB *p, *r;
int k = 0;
p = L;
while (p->next != NULL && k next;
k += 1;
}
if (k != i - 1) {
printf("删除节点的位置不合理!");
return ERROR;
}
r = p->next;
p->next = p->next->next;
*e = r->data;//。。。。。。。。。。。。。。改
free(r);
return OK;
}// 删除
int main()
{
LB *head;
head=chuangjian(5);// 创建链表
xianshi(head,5);// 显示链表
int *e = (int *) malloc(sizeof(int));//。。。。。。。。。。。。。改
shanchu(head, 3, e);
xianshi(head, 4);
free(head);
return 0;
}
删除那个我又改了下 更合理了 你可以改改
嗯!我在吃饭~等下看
为什么第二个代码输出的时候是一个黑色的框框~什么都没有
你要输入n个数据的啊 用回车隔开 我那个代码n = 5;
head=chuangjian(5);// 创建链表 括号内为你要几个数据
xianshi(head,5);// 显示链表 括号内数字为链表长度
int *e = (int *) malloc(sizeof(int));//。。。。。。。。。。。。。改
shanchu(head, 3, e);//括号内数字为删节地方
xianshi(head, 4);//括号内数字为删除后链表长度
然而结果不对~……你看看刚刚发的截图
追答我第二段只发了一部分 你要把前面的也加上的然后把for里面的Int i放到外面
Head=p=NEW;
int i;
for(i=0;i<n;i++){
像这样 有两句
free(e);// .....................最后加一句这个
free(head);
……好吧~我在编辑一下
追答追达有字数限制不能发全代码了
追问哦哦~OK~等会
不对啊~要不你复制粘贴发个截图给我~不好意思了
追答把for里面的int去掉
for(i = 0;i < n;i++)
你仔细核对下 代码一样不可能这样的额 我已经无计可施了T_T
追问我同学写那个很好哎~很方便……
好吧~谢谢你了~太爱你了学长~~这么耐心的给我写~还搞了这么久~
追答我这是临时改的 没想那么多
本回答被提问者和网友采纳