数据结构习题!!!!帮我用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
追问我同学写那个很好哎~很方便……
好吧~谢谢你了~太爱你了学长~~这么耐心的给我写~还搞了这么久~
追答我这是临时改的 没想那么多
本回答被提问者和网友采纳求C语言大神帮忙,一道数据结构题,删除单链表中最大和次最大的数,感激...
操作结果:若L为空表,则返回TRUE,否则返回FALSE *\/status listIsEmpty (linkList L) {return L->next == NULL;}\/* 单链表指定位置插入新元素 *\/\/* 操作结果:在带头结点的单链表L中第i个位置之前插入元素e *\/status listInsertNode (linkList L, int i, elemType e) {int j=0;linkList...
c语言中怎样编写一个删除程序?
链表保存到文件,删除节点,添加节点。include "stdio.h"include "malloc.h"include \/ 用户数据结构 \/ typedef struct struData { char usertext[100];int userdata1;int userdata2;}ST_DATA,*PST_DATA;\/ 链表结构 \/ typedef struct struLink { ST_DATA userdata;struct struLink pnext;}ST_LINK...
数据结构,c语言~写一个算法:删除整数数组中相同的多余整数(只保留第...
include<stdio.h>int main() {int a[] = {36,25,14,63,36,25,14,36,36};int i,j,k,n = sizeof(a)\/sizeof(a[0]);for(i = 0; i < n; ++i)printf("%d ",a[i]);printf("\\n");for(i = 0; i < n; ++i) {for(j = i + 1; j < n - 1; ++j) {if(a[...
关于数据结构算法,谁能帮我用C语言写下?谢谢
typedef struct \/* 队列的链表结构 *\/ { QueuePtr front,rear; \/* 队头、队尾指针 *\/ }LinkQueue;Status visit(QElemType c){ printf("%d ",c);return OK;} \/* 构造一个空队列Q *\/ Status InitQueue(LinkQueue *Q){ Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));if(!Q-...
关于数据结构的问题,用C语言描述
1.栈、队列的定义及其相关数据结构的概念,包括:顺序栈,链栈,共享栈,循环队列,链队等。栈与队列存取数据(请注意包括:存和取两部分)的特点。2.递归算法。栈与递归的关系,以及借助栈将递归转向于非递归的经典算法:n!阶乘问题,fib数列问题,hanoi问题,背包问题,二叉树的递归和非递归遍历问题,图的深度遍历与栈的...
数据结构作业~急求~~~用c语言或c++ 使用单链表实现系统进程列表,完成...
一、单链表的建立 有了动态内存分配的基础,要实现链表就不难了。所谓链表,就是用一组任意的存储单元存储线性表元素的一种数据结构。链表又分为单链表、双向链表和循环链表等。我们先讲讲单链表。所谓单链表,是指数据接点是单向排列的。一个单链表结点,其结构类型分为两部分:1、数据域:用来存储...
c语言数据结构单链表的初始化 插入 销毁 元素的取出 删除 操作 求详细C...
单链表功能大全,嘿嘿 include <stdio.h> include <stdlib.h> typedef struct node { int nDate;struct node *pstnext;}Node;\/\/链表输出 void output(Node *head){ Node *p = head->pstnext;while(NULL != p){ printf("%d ", p->nDate);p = p->pstnext;} printf("\\r\\n");} \/...
用c语言怎样做图形操作界面?详细点,最好有代码
\/* 窗口结构 *\/ wincl.hInstance = hThisInstance;wincl.lpszClassName = szClassName;wincl.lpfnWndProc = WindowProcedure;\/* 这个函数由Windows操作系统调用 *\/ wincl.style = CS_DBLCLKS; \/* 获取双击指令 *\/ wincl.cbSize = sizeof (WNDCLAS*);\/* 使用默认图标和鼠标指针 *\/ wincl....
用C语言和数据结构编写一个简单的程序(求源代码)
define MAX_NUMBER 6 \/\/修改这个参数来允许最大的位数,现设为6位 void GetZhe (const char * preStr,const char * strNum){ char newPreStr[MAX_NUMBER];char tmpStr[MAX_NUMBER];int i,j,k,iCnt;k = strlen(strNum);if (k>MAX_NUMBER) { printf("超过最大允许的位数:%d!",MAX_...
C语言数据结构无向图删除边
\/\/在用邻接表方式存储的无向图g中,删除边(i,j)void DeletEdge(AdjList g,int i,j){ \/\/先删除定点i的边(i,j)p=g[i].firstarc;pre=null; \/\/删顶点i 的边结点(i,j),pre是前驱指针 while (p)if (p->adjvex==j){ if(pre==null) g[i].firstarc=p->next;else pre->next=p->...