线性表的链式表示——单链表;头插,尾插,按值查找,按序号查找,插入,删除;

2023-10-08 05:36

本文主要是介绍线性表的链式表示——单链表;头插,尾插,按值查找,按序号查找,插入,删除;,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#include <iostream>
#include <algorithm>//fill()
#define InitSize 5using namespace std;/*线性表:链式表示——单链表;头插,尾插,按值查找,按序号查找,插入,删除*/
typedef struct LNode{int data;struct LNode *next;
}LNode,*LinkList;void List_Output(LinkList L){LNode *s;s=L->next;while(s!=NULL){printf("%d ",s->data);s=s->next;}printf("\n");
}LinkList List_HeadInsert(LinkList &L){LNode *s;int x;L=(LNode *)malloc(sizeof(LNode));L->next=NULL;scanf("%d",&x);while(x!=999){s=(LNode *)malloc(sizeof(LNode));s->data=x;s->next=L->next;L->next=s;scanf("%d",&x);}return L;
}LinkList List_TailInsert(LinkList &L){LNode *s,*r;int x;L=(LNode *)malloc(sizeof(LNode));L->next=NULL;r=L;scanf("%d",&x);while(x!=999){s=(LNode *)malloc(sizeof(LNode));s->data=x;r->next=s;r=s;scanf("%d",&x);}r->next=NULL;return L;
}LNode *GetElem(LinkList L,int i){//得到第i个位置(头节点的下一个节点为第1个位置);LNode *p=L->next;int j=1;if(i==0)return NULL;while(p&&j<i){p=p->next;j++;}return p;
}LNode *GetElem2(LinkList L,int e){LNode *p=L->next;while(p!=NULL&&p->data!=e)p=p->next;return p;
}LinkList List_Insert(LinkList &L,LNode *s,int i){//插入到第i个位置(头节点的下一个节点为第1个位置);前插操作:先找到i-1,插到i-1的后面LNode *p;p=GetElem(L,i-1);s->next=p->next;p->next=s;return L;
}LinkList List_Insert2(LinkList &L,LNode *s,LNode *p){//已给出s和p,将s插入到p的前面:先插到后面,再交换值s->next=p->next;p->next=s;int temp;temp=p->data;p->data=s->data;s->data=temp;return L;
}LinkList List_Delete(LinkList &L,int i){//删除第i个结点LNode *p;p=GetElem(L,i-1);LNode *q;q=(LNode *)malloc(sizeof(LNode));q=p->next;p->next=q->next;free(q);return L;
}LinkList List_Delete2(LinkList &L,LNode *p){LNode *q;q=(LNode *)malloc(sizeof(LNode));q=p->next;p->data=p->next->data;p->next=q->next;free(q);return L;
}
int main()
{/*线性表:链式表示——单链表;头插,尾插,按值查找,按序号查找,插入第i个位置,插入已给结点的后面,删除第i个结点,删除已给结点*//*LinkList L2;List_HeadInsert(L2);List_Output(L2);*/LinkList L;List_TailInsert(L);List_Output(L);//LNode *s;//s=GetElem(L,2)//获取第i个结点(头节点的下一个节点为第1个位置)//printf("%d\n",s->data);//LNode *s1=GetElem(L,3);//GetElem2(L,2);//printf("%d\n",s1->data);/*LNode *s3;s3=(LNode *)malloc(sizeof(LNode));s3->data=9;List_Insert(L,s3,2);//插入到第i个位置List_Output(L);*//*LNode *p=GetElem(L,2);LNode *s2;s2=(LNode *)malloc(sizeof(LNode));s2->data=9;List_Insert2(L,s2,p);//将s插入到p的前面List_Output(L);*///List_Delete(L,2);//List_Output(L);/*LNode *p;p=L->next->next;//给出需要删除的结点List_Delete2(L,p);List_Output(L);*/return 0;
}

这篇关于线性表的链式表示——单链表;头插,尾插,按值查找,按序号查找,插入,删除;的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/163054

相关文章

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

如何恢复回收站中已删除/清空的文件

回收站清空后如何恢复已删除的文件?是否可以恢复永久删除的文件?或者最糟糕的是,如果文件直接被删除怎么办?本文将向您展示清空回收站后恢复已删除数据的最佳方法。 回收站清空后如何恢复已删除的文件? “回收站清空后我还能恢复已删除的文件吗?” 答案是肯定的,但是在这种情况下您将需要一个  回收站恢复工具 来从回收站中检索文件: 错误/永久删除回收站或任何数字存储设备中的文件 直接删除的文件/

Verybot之OpenCV应用二:霍夫变换查找圆

其实我是想通过这个程序来测试一下,OpenCV在Verybot上跑得怎么样,霍夫变换的原理就不多说了,下面是程序: #include "cv.h"#include "highgui.h"#include "stdio.h"int main(int argc, char** argv){cvNamedWindow("vedio",0);CvCapture* capture;i

Go语言构建单链表

package mainimport "fmt"type ListNode struct {Val intNext *ListNode}func main() {list := []int{2,4,3}head := &ListNode{Val:list[0]}tail := head //需要头尾两个指针for i:=1;i<len(list);i++ {//方法一 数组直接构建链表tai

matplotlib绘图中插入图片

在使用matplotlib下的pyplot绘图时,有时处于各种原因,需要采用类似贴图的方式,插入外部的图片,例如添加自己的logo,或者其他的图形水印等。 一开始,查找到的资料都是使用imshow,但是这会有带来几个问题,一个是图形的原点发生了变化,另外一个问题就是图形比例也产生了变化,当然最大的问题是图形占据了整个绘图区域,完全喧宾夺主了,与我们设想的只在绘图区域中占据很小的一块不相符。 经

Linux 删除 当前下的 mysql-8.0.31 空文件夹

在Linux中,如果你想要删除当前目录下的名为mysql-8.0.31的空文件夹(即该文件夹内没有任何文件或子文件夹),你可以使用rmdir命令。但是,如果mysql-8.0.31文件夹并非完全为空(即它包含文件或子文件夹),rmdir命令会失败。 如果你的目标是删除mysql-8.0.31文件夹及其内部的所有内容(无论是否为空),你应该使用rm命令结合-r(或-R,它们是等价的)选项来递归地删

如何删除不小心上传到git远程仓库中的.idea .iml文件

如果在开始的时候不配置,gitignore文件或者文件配置不正确,初始化上传的时候就会有一些不必要的信息上传上去 如果已经存在了一些文件在git远程仓库中,如。idea,.iml文件等。 首先在项目中定义一个  .gitignore文件,简单的实例如下也可以用idea中的gitignore插件 .DS_Storeclasses/*.settings/target/.classpath

Win8下如何快速查找和删除电脑中的病毒

Win8系统如何查找和删除病毒?检查你的电脑是否存在病毒的一种快速方法是使用 Windows Defender. 此恶意软件防护随 Windows 提供,可帮助识别和删除病毒、间谍软件和其他恶意软件。   注意:如果你使用的是 Windows RT,则 Windows Defender 会始终启用,并且不能关闭。   如果你使用的是 Windows 8,则可以根据自己的喜好运行由其他