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

如何建立一个有序链表

发布网友 发布时间:2022-05-15 18:51

我来回答

3个回答

热心网友 时间:2024-02-27 00:25

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
typedef int ElemType;
typedef struct LNode {
ElemType date;
struct LNode *next;
}linklist,*link;

/*构造链表*//////////////////////////////////////
void IinitList(link &L)
{
if(L)delete L;
L= (link)malloc(sizeof(LNode)) ;
if (!L) exit(1);
L->next=NULL;
cout<<"链表已经建立\n";
}
//////////////////////////////////////////////////////
// /*删除结点*/// //////////////////////////////////////////////
int listdelete(link &L,int i,ElemType &e)
{
link p,q; int j;
p=L;j=0;
while(p->next&&j<i-1)
{
p=p->next;++j;
}

q=p->next;
p->next=q->next;
e=q->date;free(q);
cout<<"结点已经删除\n";
return 1;
}
////////////////////////////////////////////// /////////
// /*插入结点*/////////////// ///////////////////////
int listinsert(link &L,int i,ElemType e)
{
link p,q;
int j;
p=L;j=0;
while(p&&j<i-1)
{
p=p->next;++j;
}
q= (link)malloc(sizeof(LNode));
q->date=e;
q->next=p->next;
p->next=q; cout<<"结点已经插入\n";
return 1;
}
/////////////////////////////////////////////////////
////*显示数据*///////// ////////////////////////////////
void show(link l)
{ link p; int j;
p=l;j=0;
cout<<"链表的值为:\n";
while(p->next)
{
cout<<p->next->date<<endl;
p=p->next;
}
}
//////////////////////// /////////////////////////////////
//////销毁链表////// ////////////////////////////////////////
void destorylinst(link &L)
{
while(L)
{ link p=L;
L=L->next;

free(p) ;
}
L=NULL;
}

////// 打印表头///////////////////////////////////////
void print()
{
cout<<"------------------------\n";
cout<<"------------------------\n";
}

////查找结点//// ////////////////////////////////////////

void lookfor(link l,int e)
{
if(l==NULL)
cout<<"链表未建立,请先构造链表\n" ;
else{
link p; int i=0,j=0;
p=l->next;
cout<<"你查找值的位置是:\n " ;
while(p)
{ if(p->date==e)
{ j++;
cout<<i+1<<endl;
}
p=p->next; i++;
}cout<<"查找完毕\n";
if(j==0)
cout<<"你查找的值不在链表中 、\n";
} }

void putline(link &l)
{
if(l==NULL ||l->next==NULL )
cout<<"链表未建立或是空的,请先构造链表\n" ;
else{
link p,q;
p=l->next;
while(p!=NULL)
{ q=p->next;
while(q!=NULL)
{
if(p->date>q->date)
{ ElemType t;
t=p->date;
p->date=q->date;
q->date=t; }
q=q->next;
} p=p->next;
} cout<<"链表已经排序 \n";
}
}

//////测试函数///// /////////////////////

void main()
{ link L=NULL; int k;
while(1)
{
cout<<"按0退出\n"<<"按1建立链表\n"<<"按2插入结点\n"<<"按3删除结点\n"
<<"按4清空链表\n"<<"按5查找结点\n"<<"按6进行排序\n" ;
print();
int a,i,j;
cin>>a;
switch(a)
{ case 0: if(L!=NULL)
destorylinst(L) ;
exit(1);

case 1:
IinitList(L);
k=0;
print();show(L) ;
cout<<"空的链表\n";
cout<<"链表长度为: "<<k<<endl;
print();
cout<<"请先给链表输入值,输入 0 再按回车结束\n";
int bb;
cin>>bb;
while(bb!=0)
{ k++;
listinsert(L,k,bb) ;
cin>>bb;
} print();
show(L) ; cout<<"链表长度为: "<<k<<endl;
print();break;

case 2:
if(L!=NULL)
{
cout<<"输入位置:\n";
cin>>i;
while(i>k+1 || i<1)
{
cout<<"位置错误,重新输入插入位置\n" ;
cin>>i;
}
cout<<"输入植;\n";
cin>>j;
listinsert(L,i,j) ;
k++;
print();
show(L);
cout<<"链表长度为:"<<k<<endl;
print();
}else
{ cout<<"链表不存在,请先建链表\n";
print(); }break;

case 3:
if(L!=NULL)
{
cout<<"输入位置:\n";
cin>>i;
while(i>k || i<1)
{
cout<<"位置错误,重新输入删除位置\n" ;
cin>>i;
}
listdelete (L,i,j);
cout<<"你删除的是:\n";
cout<<j<<endl ;
k--; print();
show(L);
cout<<"链表长度为:"<<k<<endl;
print();
}
else {
cout<<"链表不存在,请先建链表\n";
print();
} break;

case 4:
destorylinst(L) ;
cout<<"链表已经清空\n";
print();break;

case 5:
print();
cout<<"输入要查找的值;\n";
int z;
cin>>z;lookfor(L,z);
print();break;

case 6:
putline(L);
if(L!=NULL)show(L);
print();break;

default:
break ;
}
}
delete L;
}

1

热心网友 时间:2024-02-27 00:25

#include
#include
struct Lnode {
int data;
Lnode *next;
};
void InitList(Lnode *&H){//初始化单链表即把单链表置为空
H=NULL;
}
bool ListEmpty(Lnode *&H){//链表的判空
return (H==NULL);
}
void TraverseList(Lnode *&H){//输出单链表
int i=0;
Lnode *L=H;
printf("\n");
while(H!=NULL){
i++;
printf(" %d",H->data );
H=H->next ;
if(i%10==0)
printf("\n");
}
H=L;
printf("\n");
}

void Insert(Lnode *&H, int item){//按顺序插入元素
Lnode *newptr;
newptr=new Lnode;
if(newptr==NULL){
printf("没有得到足够的空间");
exit(1);
}
newptr->data =item;
if (H==NULL||itemdata ){
newptr->next=H;
H=newptr;
return;
}
Lnode *q;
Lnode *p;
q=H;p=H->next ;
while(p!=NULL){
if(item p->data) break;
else{
q=p;
p=p->next;
}
}
newptr->next =p;
q->next=newptr;

}

bool Delete(Lnode *&H,int item){//删除给定值的元素
if(H==NULL){
printf("表空,不可以进行删除操作");
exit(1);
}
Lnode *q=H,*p=H->next ;
if (H->data ==item){
H=H->next ;
delete q;
return true;
}

while(p!=NULL){
if(p->data ==item)break;
q=p;
p=p->next ;
}
if (p==NULL){
printf("没有找到要删除的元素");
return false;
}

q->next =p->next ;
delete p;
return true;
}
void ClearList(Lnode *&H){//清空链表
Lnode *p;
if(H!=NULL){
p=H->next ;
delete H;
H=p;
}
}
void main(){

int m,n;
Lnode *lnode;
InitList(lnode);
printf("随机生成链表并排序后输出:\n");
for(int i=0;i<8;i++)
Insert(lnode,rand()/90+10);
TraverseList(lnode);
printf("\n请输入要在表内插入的元素: ");
scanf("%d",&m);
Insert(lnode,m);
printf("\n链表元素从小到大排序: ");
TraverseList(lnode);
printf("\n请输入要删除的元素: ");
scanf("%d",&m);
Delete(lnode,m);
TraverseList(lnode);
ClearList(lnode);
printf("链表已清空\n");
}

希望对你有帮助!

热心网友 时间:2024-02-27 00:26

下面是C#中的实现代码:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华为p7支持法语操作系统? 大白鲨HD6750 1GB GDDR5白金版这个显卡怎么样? 请高手们看看我的配置,加装显卡精影HD6670和HD6750哪个比较合适点... 蓝宝石HD 6750 1GB GDDR5白金版基本参数 ...HD5770 HD6750 HD6670 这几个显卡哪个好一些?大神们帮帮忙 蓝宝HD6750 1GB GDDR5白金版重要参数 ...是蓝宝石 HD6670 1G DDR5 白金版 HD6770 1G DDR5 白金版 HD6750 1G... 蓝宝石: HD6750/1G 黄金版和HD6670 1GB GDDR5白金版哪个好点啊?我的... 如何理解“从众”心理是一把“双刃剑”。 领动用5W30还是用5W40啊 用C语言编写一个算法,实现有序链表的插入。链表有序且不允许有重复元素? 有序链表是什么啊 有序链表 急!!!1C语言大神来!!关于链表的元素去重问题 链表去重问题,大神来? 宏翔·文和苑怎么样?好不好?值不值得买? 安阳润安文和苑怎么样?好不好?值不值得买? 宏翔·文和苑周边环境怎么样?生活便利吗? 汤阴文和苑8号楼的槽钢层在几层 周口文和苑要拆迁吗 烤色玛瑙里外一样吗 哪里橡胶接头好? 各位玩友 现在缠丝玛瑙或是其他玛瑙都是染色或烤色吗 耐高压橡胶接头的具体分类 请教下面的玛瑙是否染色或烧色 要是染色对身体是否对身体有害 谢谢 出售各种胶管接头 大力牌电动执行器SDQ13-18-11321-ZTG数字跟字母带表什么意思? 谁知道耐油橡胶接头的工作性能是什么?徐晓得的人说下哈,则 这是烤色玛瑙还是染色玛瑙? 大家告诉我一下耐油橡胶接头的工作性能是什么?缮帮帮着急的人吧,浇 有序单链表什么意思 怎样构造有序单链表? 顺序存储的有序线性表 有序线性链表 高中数学选修1-1求详解谢谢! 有序链表的合并,c语言 如何实现有序线性链表的类折半查找 有序线性链表可以用二分发查找,为什么顺序存储的有序线性表不可以? 高中数学选修1—1 高中数学选修1—1和2—1的区别,它们教的大致一样吗? 自制锅贴的做法,自制锅贴怎么做好吃,自制锅贴 锅贴家常做法怎么做 豆腐是一种生熟皆可老幼皆宜的美食佳品,豆腐的几种制作方法您知道吗? 长沙市星海休闲农庄有限公司怎么样? 我附近有什么地方比较好玩 偷水最新方法2015水表不转 水表过水,但是水表不走字了怎么办? 可以用水但水表不转了 算偷水吗? 羼是什么意思 羼字什么意思 “羼”的读音是什么?