问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

编写算法分别将单链表的创建,插入和删除用C语言实现

发布网友 发布时间:2022-05-26 17:27

我来回答

2个回答

热心网友 时间:2023-10-06 13:59

首先要明确的是LZ 对于链表结构中的结点这个词有一点的了解。并且要知道它其中所表达的意思和所代表的信息。这是前提基础!!
单链表的建立有两种方法,一种是在开头的,,一种是在末尾,一般情况下是在在开头的/。这样的操作有利于在遇到一些边界问题的时候可以和更加容易将算法更好的规范与简化。
下面分别介绍在C中链表创立的两种不同的方法代码如下(仅供参考):
linkList Creat_LinkList1()
{
LinkList H=(LinkList)malloc(sizeof(lNode)) /*产生头结点*/
h->next=NULL;
LNode *s;
int x;
scanf("%d",&x);
while (x!=1)
{
s=(LinkList)malloc(sizeof(LNode));
s-=data=x;
s->next=H->next;
H->next=s;
scanf("%d",&x);
}
return H;
}
下面操作的是在如何在末尾建立链表结构:
LinkList Creat_LinkList2()
{
LinkList H=(LinkList)malloc(sizeof(LNode));
h->next=NULL; /*空表*/
LNode *s;
*r=H;
int x;
scanf("%d",&x);
while (x!=1)
{
s=(LinKList)malloc(sizeof(LNode));
s->data=x;
s->next=r->next;
r->next=s;
r=s;
scanf("%d",&x);
}
return H;
}
这两种建立链表所要做的首要工作是申请一个头结点,并且将头结点置空(NULL);
插入:
代码如下:
int Insert_LinkList(LinkList H,int i, ElemType x)
/*在链表H中第i个位置插入一个为X的元素*/

{
LNode *p,*s;
p=Get_LinkList(H,i-1);
if (p==NULL)
{
printf("插入位置 i 出错");

return ERROR;}
else
{s=(LinkList)malloc(sizeof(LNode));
s->data=x;
s->next=p->next;
p->next=s;
return OK;
}
删除:
代码如下:
int Del_LinkList (LinkList H , int i)
{
LinkList p,q;
q+Get_LinkList(H, i-1);
if(q==NULL)
{
printf("第i-1个结点不");
return ERROR;
}
else
{
if (q->next==NULL)
{
printf("第I个结点不存在");
return ERROR;}
else
{
p=q->next;
q->next=p->next;
free(p);/*释放结点p*/
return OK;
}
}
还是那句话LZ必须对于结点的含义要有透彻的认识:

参考资料:数据结构

热心网友 时间:2023-10-06 14:00

#include<stdio.h>
#include<malloc.h>

typedef struct stackNode{
int data;
struct stackNode * next;
}LinkNode,* LinkList;
void InitList(LinkList * L)
{
*L = (LinkList)malloc(sizeof(LinkNode)); //只能通过改变指向地址的值的方式来对实参进行修改
(*L)->next = NULL;
}
void CreateList(LinkList L)
{
LinkNode * Node;
LinkNode *p = L;
int value;

printf("Please input a num:");
scanf("%d",&value);
while(value != -1)
{
Node = (LinkNode *)malloc(sizeof(LinkNode));
Node->data = value;
Node->next = NULL;
p->next = Node ;
p = p->next;
printf("Please input a num:");
scanf("%d",&value);
}
}
void InsertList(LinkList L, int value)
{
LinkNode * Node;
LinkNode * p = L;

Node = (LinkNode*)malloc(sizeof(LinkNode));
Node->data = value;
Node->next = NULL;

while(p->next != NULL )
{
p = p->next;
}
p->next = Node;
}
void DelList(LinkList L, int value)
{
LinkNode * p = L;
LinkNode * pre;
while(p != NULL && p->data != value)
{
pre = p;
p = p->next;
}
if(p == NULL)
printf("Did not find %d!\n",value);
else
{
pre->next = p->next;
free(p);
}
}
void Print(LinkList L)
{
LinkNode *p = L->next;
while(p != NULL)
{
printf("%d\n",p->data);
p = p->next;
}
}
void main()
{

LinkList L;
InitList(&L);
CreateList(L);
InsertList(L,10);
DelList(L,12);
Print(L);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我家300多k的网速为什么玩cf总是很迟钝,连切枪都很慢 CF切换枪的速度很慢 ...东西需要输入apple ID密码 我不知道怎么办?更新微信需要appleID_百... ...一遍id苹果手机的每次更新软件都需要输入id和密码请问怎么解决_百度... ...ID 我不知道密码是什么,也不懂怎么申请,想下个软件都下不了... 微信直播王者荣耀有收益吗 王者荣耀新手主播能挣多少 华为是如何进入手机市场的? ...用的那种安在船边上承鱼竿的那个座子中文叫什么?就是下图中的那个... 放在哪里不动钓鱼的叫什么? 单链表代码 小米4怎么抢购 小米3是在这个页面上抢购吗?求大神指导 2月11日小米抢购在那个页面 创建单链表 请问:在微信上抢购小米手机,通过什么途径进入抢购界面,抢购界面在哪?什么样子? 有木有抢购小米成功的高手丫?整点抢购的时候是从哪个界面进去的啊? 单链表的建立和删除! 小米红米手机抢购的页面是哪个? 抢购红米在小米官网哪个页面刷新 S0D酵素粉什么时候吃比较好 创建一个单链表,要能运行成功的代码 英语与生活有什么联系? 用C语言代码创建一个单链表,包含(1)创建链表(2)求表长(3)链表的查找(4)链表的插入(5)链 市场营销环境分析方法除了swot分析方法,还有什么方法? 与谁保持联系用英语怎么说 关于“单链表操作”的代码及部分说明?(要求如下)满意再追加分! 与…取得联系 英语词组 翻译英语 与…联系 为中华之崛起而读书手抄报内容? 中学生应该绑多重的绑手沙袋和绑腿沙袋? 刚过满月孩子有点鼻子不通气怎么办啊? 中学生腿上绑沙袋应该绑多少斤的 用背包和绑腿的沙袋做负重锻炼对身体有什么危害?我今年十八岁了,记住是用背包来负重锻炼,要详细的回... 场景作文200字 三年级作文两百字场面描写玩快递员 我要一篇场景作文200字 依旧是最靓的仔,到店实拍新阿特兹 依旧是最靓的仔,到店实拍爱车阿特兹的魅力外观! 新款马自达6阿特兹旅行版 什么时候上市 网站运营者必须分析数据了解用户需求 基本不等式是内容什么 基本不等式,高一 高中基本不等式都有哪些 河南创越企业管理咨询有限公司怎么样? 河南驻马店八年级数学课本是什么版的 河南阅开心文化传播有限公司怎么样? 河南多位手艺人走红网络,他们的身上有哪些共同的特性? 注册一个文化传媒公司需要多少 八年级上册数学课本P138第十题