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

创建单链表

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

我来回答

1个回答

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

额。。。。我的是c++的 你要不?

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
//---------------------------------------
typedef struct LNode{//定义结构体
int data;
struct LNode *next;
}LNode,*LinkList;

void CreateList(LinkList & L,int n){
//创建一个n个元素的单链表

L=(LinkList) malloc(sizeof(LNode));
L->next=NULL;
LNode *q=L;
cout<<"输入数"<<endl;
for(int i=n; i>0; i--){
LNode* p=(LinkList)malloc(sizeof(LNode));
cin>>p->data;
q->next=p;
p->next=NULL;
q=p;
}

}

int ListDel(LinkList &L,int i,int &e){
//在带头节点的单链表L中,删除第i个元素,并由e返回其值
LNode *p=L;
int j=0;
while(p->next && j<i-1){
p=p->next;
++j;
}
if(!(p->next)||j>i-1) return -1;
LNode *q=p->next;
p->next=q->next;
e=q->data;
free(q);
return 0;
}

//----------------------

int GetElem(LinkList L,int i, int &e){
//L为带头节点的单恋表头指针
//当第i个元素存在时,其值赋给e并返回ok,否则返回error
LNode *p=L->next;
int j=1;
while(p && j<i){
p=p->next;++j;
}
if(!p || j>i) return -1;
e=p->data;
return 0;

}

//-------------------

int ListInsert(LinkList &L,int i, int e){
//在头节点的单链表L中的第i个元素之前插入元素e
LNode* p=L; int j=0;
while(p && j<i-1){p=p->next; ++j;}

if(!p || j>i-1) return -1;
LNode* s=(LinkList)malloc( sizeof(LNode));
s->data=e; s->next=p->next;
p->next=s;
return 0;
}

//-------------
void print(LinkList L)
{
cout<<"单链表的元素如下:"<<endl;
LNode* p=L;
p=p->next;
while(p->next!=NULL){
cout<<p->data<<" ";
p=p->next;
}
cout<<p->data<<endl;
}

int main(){
LinkList(L);
cout<<"请输入要创建的单链表的长度n"<<endl;
int n;
cin>>n;
CreateList(L,n);
print(L);

cout<<"请选择要进行的操作!i--插入;d--删除;s--查找"<<endl;
char x;
cin>>x;

switch(x){
case 'i':
int pos,e;
cout<<"请输入位置pos和要插入的数值e:"<<endl;
there:
cin>>pos>>e;
if(ListInsert(L,pos, e)!=0)
{cout<<"您的输入不正确!请重新输入!"<<endl;
goto there;
}
print(L);
break;

case 'd':
int posi;
here: cout<<"请输入要删除的位置"<<endl;
cin>>posi;
if(ListDel(L,posi,e)!=0)
{cout<<"您的输入不正确!请重新输入!"<<endl;
goto here;
}
cout<<"您要删除的位置上的元素是"<<e<<endl;
print(L);
break;

case 's':
int i;
cout<<"请输入要查找的位置"<<endl;
cin>>i;
int y;
y=GetElem(L,i, e);
if(y==-1)
cout<<"该位置上元素不存在!"<<endl;
else
cout<<"第"<<i<<"位置上的元素是"<<e<<endl;
break;
}
return 0;

}

自己对照一下吧,照抄对你一点好处没有,还是希望你自己能做一些东西。至少是看懂
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
缺土的宝宝女孩名字车姓 推荐一些带有成字的女孩名字 江姓婴儿名字大全女孩2024龙宝宝 陌陌的安全等级和财富等级是什么 如何提高陌陌等级? 冰箱旧了是不是很耗电 手机号收不到LINE的手机验证码怎么办 注册line连我账号收不到验证码 日韩服属于哪里 lineplay进入别人家能说话吗 请问:在微信上抢购小米手机,通过什么途径进入抢购界面,抢购界面在哪?什么样子? 有木有抢购小米成功的高手丫?整点抢购的时候是从哪个界面进去的啊? 单链表的建立和删除! 小米红米手机抢购的页面是哪个? 抢购红米在小米官网哪个页面刷新 S0D酵素粉什么时候吃比较好 创建一个单链表,要能运行成功的代码 英语与生活有什么联系? 用C语言代码创建一个单链表,包含(1)创建链表(2)求表长(3)链表的查找(4)链表的插入(5)链 市场营销环境分析方法除了swot分析方法,还有什么方法? 与谁保持联系用英语怎么说 关于“单链表操作”的代码及部分说明?(要求如下)满意再追加分! 与…取得联系 英语词组 翻译英语 与…联系 为中华之崛起而读书手抄报内容? 把……和……联系在一起 英语词组 英语翻译 与什么什么有紧密联系 怎么说?是不是be bond with? 把什么和什么联系在一起,用英语怎么说 与 有联系英语beconnect 与...有联系 英语词组,有3个是什么? 2月11日小米抢购在那个页面 小米3是在这个页面上抢购吗?求大神指导 小米4怎么抢购 单链表代码 编写算法分别将单链表的创建,插入和删除用C语言实现 中学生应该绑多重的绑手沙袋和绑腿沙袋? 刚过满月孩子有点鼻子不通气怎么办啊? 中学生腿上绑沙袋应该绑多少斤的 用背包和绑腿的沙袋做负重锻炼对身体有什么危害?我今年十八岁了,记住是用背包来负重锻炼,要详细的回... 场景作文200字 三年级作文两百字场面描写玩快递员 我要一篇场景作文200字 依旧是最靓的仔,到店实拍新阿特兹 依旧是最靓的仔,到店实拍爱车阿特兹的魅力外观! 新款马自达6阿特兹旅行版 什么时候上市 网站运营者必须分析数据了解用户需求 基本不等式是内容什么 基本不等式,高一 高中基本不等式都有哪些 河南创越企业管理咨询有限公司怎么样?