城市链表c语言(C语言链表的使用方法)

2026-04-11 00:45:01 :0

城市链表c语言(C语言链表的使用方法)

本篇文章给大家谈谈城市链表c语言,以及C语言链表的使用方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录

C语言链表的使用方法

下面的程序是单链表的建立与输出,都有详细的注释,相信你能看的懂
但要想学习链表必须得掌握了一定的C语言基础
下面这个链表的作用是建立5个结点的单链表,5个结点的值输入以后,依次输出各个结点的值
#include《stdio.h》
#include《stdlib.h》
//链表的建立与输出
struct node//定义结点的类型
{
int num,score;
node*link;
};
void main()
{
node*creat(int n);//函数原型声明
void print(node*h);//函数原型声明
node*head=0;//定义链头指针并初始化
head=creat(5);//调用creat函数创建链表
print(head);//调用print函数输出链表
}
node*creat(int n)
{
node*h=0,*p,*q;
int i;
for(i=1;i《=n;i++)
{
q=(node*)malloc(sizeof(node));//分配一个结点空间
scanf("%d%d",&q-》num,&q-》score);//输入新结点的值
q-》link=0;//新结点的指针域置0
if(h==0)
h=q;//第一个结点作为链头结点
else
p-》link=q;//新结点添加到链表的末尾
p=q;
}
return h;//返回链头指针
}
void print(node*h)//链表输出函数的定义
{
while(h)//当指针h非空时输出h所指结点的值
{
printf("num=%d\tscore=%d\n",h-》num,h-》score);
h=h-》link;//使h指向下一个结点
}
}

C语言链表中q->next=p;表示什么意思

q-》next = p; 表示将节点p加入到节点q之后。

意思:使当前指针指向链表的下一个结点。

一般作用在数据结构中的单链表里由应用,语句中的p一般指向一个结构体类型的数据,此类型的数据通常表示节点;结构体里存放的一些数据和记录下一个节点地址的指针变量next;这个next就好比链条一样,连接着一个个节点。

->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么要用指针取出结构体中的数据,就要用到“->”.

扩展资料

链表的特点:

1、n个节点离散分配

2、每一个节点之间通过指针相连

3、每一个节点有一个前驱节点和一个后继节点

4、首节点没有前驱节点,尾节点没有后继节点

创建链表前须知

首节点:存放第一个有效数据的节点。

头节点:在单链表的第一个结点之前附设一个结点,它没有直接前驱,称之为头结点,头结点的数据域可以不存储任何信息,指针域指向第一个节点(首节点)的地址。头结点的作用是使所有链表(包括空表)的头指针非空。

头指针:指向头节点的指针。

尾节点:存放最后一个有效数据的节点。

尾指针:指向尾节点的指针。

百度百科——链表

将若干城市的信息,存入一个带头结点的单链表结点中的城市信息包括:城市名,城市的位置坐标(c++实现)

#include 《iostream》
#include 《math.h》
#include《conio.h》
#include《string》
using namespace std;
struct Node
{
char Name;
double x,y;
Node *next;
};
class List
{
private:
Node *head,*f;
int size;
public:
List();
void Insert();
void Delete();
void Search();
void update();
void init();
void cha();
void show();
};
List::List()
{
head = new Node;
f=head;
size=0;
}
void List::Insert()
{
Node *p = new Node;
cout《《"请给出你要插入的城市的信息:";
cin》》p-》Name ;
cin》》p-》x ;
cin》》p-》y ;
int i;
if(size==0)
{
cout《《"城市地图上没有任何城市信息!";
f-》next=p;
f = p;
p-》next = NULL;
size++;
return;
}
else
{
f-》next=p;
size++;
f = p;
p-》next = NULL;
}
}
void List::Delete()
{
Node *p;
Node *t;
char name;
cout《《"请给出你要删除的城市的名称:";
cin》》name ;
for(p = head; p-》next != NULL; p = p-》next)
if(!strcmp(p-》next-》Name,name))
{
t = p-》next;
p-》next = t-》next;
delete(t);
size--;
break;
}
}
void List::Search ()
{
char name;
Node *p;
cout《《"请给出你想查询的城市的名称:";
cin》》name;
for(p = head-》next; p != NULL; p = p-》next)
if(!strcmp(p-》Name,name))
{
cout《《p-》Name ;
cout《《’(’《《p-》x《《’,’《《p-》y《《’)’《《endl ;
break;
}
}
void List::update()
{
char name;
Node *p;
cout《《"请给出你想查询的城市的名称:";
cin》》name;
for(p = head-》next; p != NULL; p = p-》next)
if(!strcmp(p-》Name,name))
{
cout《《"请输入新的城市名称:";
cin》》p-》Name;
cout《《"请输入城市的坐标x,y:";
cin》》p-》x 》》p-》y ;
break;
}
}
void List::cha()
{
char name;
Node *p;
Node n;
int i;
double d;
double de ;
cout《《"你给的城市是 :";
cin》》name ;
cout《《"你给的距离是 :";
cin》》d;
for(p = head-》next; p != NULL; p = p-》next)
if(!strcmp(p-》Name,name))
break;
n = *p;
p = head-》next;
for(i=0;i《size;i++, p = p-》next)
{
de=sqrt(((*p).x-n.x)*((*p).x-n.x)+((*p).y-n.y)*((*p).y-n.y));
if(de《=d && strcmp(p-》Name,name))
{
cout《《p-》Name ;
cout《《’(’《《p-》x《《’,’《《p-》y《《’)’《《endl ;
}
}
}
void List::show()
{
Node *p;
p=head-》next;
int i;
for(i=0;i《size;i++)
{
cout《《p-》Name ;
cout《《’(’《《p-》x《《’,’《《p-》y《《’)’《《endl ;
p = p-》next;
}
}
void main()
{
List t;
int k;
do{
cout《《"\n\n 1.增加城市";
cout《《"\n\n 2.删除城市";
cout《《"\n\n 3.修改城市信息";
cout《《"\n\n 4.根据城市名查询其坐标";
cout《《"\n\n 5.给坐标P和距离D,查询所有与P的距离小于等于D的城市";
cout《《"\n***************************************************************"《《endl;
cout《《"\n 请输入你的选择操作(1、2、3、4、5) :\n";
cin》》k;
switch(k)
{
case 1:{
t.Insert();
t.show ();
}break;
case 2:{
t.Delete();
t.show ();
}break;
case 3:{
t.update ();
t.show ();
}break;
case 4:{t.Search();}break;
case 5:{t.cha ();}break;
default:break;
}
}while(k》0&&k《6);
cout《《" 按任意键返回......";
_getch();
return;
}
说句实话,你的程序要是能运行你才奇怪,从头错到尾。
我建议你去闭关重新学一下循环结构,判断结构,链表,指针以及结构体的知识,从你的程序我可以看出你是一点都没有掌握这些知识
现在程序我帮你改好了

将若干城市的信息存入一个带头结点的单链表,结点中的城市信息包括城市名,城市的位置坐标,要求:

#include《stdio.h》
#include《malloc.h》
typedef struct Node{
char data1;
int data2,data3;
struct Node *next;
}Node,*LinkList L;
void Initlinklist(LinkList *l)/*对单链表进行初始化*/{
*l=(LinkList)malloc(sizeof(Node));
(*l)-》next=NULL;
}
void CreateFromTail(LinkList L)
{
Node *r, *city;
char *b;
int flag=1,c,d;/*设置一个标志,初值为1,当输入"$"时,flag为0,建表结束*/
r=L; /*r指针动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/
while(flag) /*循环输入表中元素值,将建立新结点s插入表尾*/
{
printf("input the City:\n");
b=gets();//获取城市名
printf("input the
site:\n");
scanf("%d%d",&c,&d);//获取城市坐标
if(!strcmp(b,"$"))//跳出条件
{
city=(Node*)malloc(sizeof(Node));
city-》data1=*b;
city-》data2=c;
city-》data3=d;
r-》next=city;
r=city;
}
else
{
flag=0;
r-》next=NULL; /*将最后一个结点的next链域置为空,表示链表的结束*/
}
}//while
}

int search()//查找城市坐标 {
LinkList L;
Node *p,*q;
int flag=0;
int i;
char
c;
Initlinklist(&L);
printf("input
the element,end by ’$’\n");
CreateFromTail(L);//尾插建立单链表
p =L-》next;
printf("Which city are you
want to search:\n");
q=gets();//获取城市名
while(p!=NULL)
{
if(strcmp(p-》data1,q)){//比较输入的城市名是否存在
printf("%s’s site
is:(%d,%d)",p-》data1,p-》data2,p-》data3);//输出名字于坐标
p=NULL;//跳出循环
break;
}
p=p-》next;//下一位
}//while
}

int count()//计算符合要求的城市 {
LinkList L;
Node *p,*q;
int flag=0;
int i,e,f,g,h;
char c;
Initlinklist(&L);
printf("input the element,end by ’$’\n");
CreateFromTail(L);//尾插建立单链表
p
=L-》next;
printf("Input the site:\n");
scanf("%d%d",&e,&f);//获取坐标
printf("Input the distance:\n");
scanf("%d",&g);//获取距离
while(p!=NULL)
{
f=e+f+g;//条件2的满足条件
g=p-》data2+p-》data3;
if(g《=f){
printf("%s’s site
is:(%d,%d)\n",p-》data1,p-》data2,p-》data3);
h++;//计算符合要求的城市个数
}
p=p-》next;

}//whileprintf("There are %d cities to
meet the requirements\n",h);
}

将若干城市的信息存入一个带头节点的单链表,节点种的城市信息包括城市名城市的

#include《iostream.h》
#include《alloc.h》
main(){
int i;
/*定义名为city的递归结构*/
strut city{
char name;
student *next;/*next是指向自身的结构体指针*/
}
/*用city声明三个结构体指针变量*/
struct city *head,*tail,*temp;
/*申请第一块数据,并设置各结构指针初值*/
temp==new struct city;//申请内存
head=temp;//头指针
tail=head;//尾指针
//循环为链表输入数据
cout《《"\t name"《《endl;
for(i=1;;i++){
cout《《i《《"\t";
cin》》temp-》name;
if(temp-》name!=’*’)
{
temp-》next=null;
tail=temp;//设置尾指针
}
else{
delete temp;
tail-》next=NULL;
break;
}
temp-》next=new struct city;
temp=temp-》next;
}
}

关于城市链表c语言和C语言链表的使用方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

城市链表c语言(C语言链表的使用方法)

本文编辑:admin

更多文章:


什么时候用inner join(SQL中,用select语句时,为什么有时候要用inner join,有时候不用啊希望好心人帮忙)

什么时候用inner join(SQL中,用select语句时,为什么有时候要用inner join,有时候不用啊希望好心人帮忙)

各位老铁们好,相信很多人对什么时候用inner join都不是特别的了解,因此呢,今天就来为大家分享下关于什么时候用inner join以及SQL中,用select语句时,为什么有时候要用inner join,有时候不用啊希望好心人帮忙的问

2026年7月15日 12:30

运算器 alu 的功能是(运算器的主要功能是)

运算器 alu 的功能是(运算器的主要功能是)

“运算器 alu 的功能是”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看运算器 alu 的功能是(运算器的主要功能是)!本文目录运算器的主要功能是运算器的主要功能是计算机中运算器的作用是计算机的组成部分 计算机的组成部分有

2025年9月19日 10:00

儿童编程课网课哪个好(少儿编程课应该选择哪家)

儿童编程课网课哪个好(少儿编程课应该选择哪家)

大家好,儿童编程课网课哪个好相信很多的网友都不是很明白,包括少儿编程课应该选择哪家也是一样,不过没有关系,接下来就来为大家分享关于儿童编程课网课哪个好和少儿编程课应该选择哪家的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧

2025年7月11日 01:30

javascript窗口对象是什么(demo是不是javascript的window对象的方法)

javascript窗口对象是什么(demo是不是javascript的window对象的方法)

大家好,javascript窗口对象是什么相信很多的网友都不是很明白,包括demo是不是javascript的window对象的方法也是一样,不过没有关系,接下来就来为大家分享关于javascript窗口对象是什么和demo是不是javas

2025年9月15日 11:30

json格式书源(爱悦阁导入json)

json格式书源(爱悦阁导入json)

各位老铁们好,相信很多人对json格式书源都不是特别的了解,因此呢,今天就来为大家分享下关于json格式书源以及爱悦阁导入json的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录爱悦阁导入json小说json格式

2026年4月13日 23:15

dedecmsv6怎样安装模板(dedecms 导入新的模板,模板的css,js等,怎么设置路径)

dedecmsv6怎样安装模板(dedecms 导入新的模板,模板的css,js等,怎么设置路径)

今天给各位分享dedecms 导入新的模板,模板的css,js等,怎么设置路径的知识,其中也会对dedecms 导入新的模板,模板的css,js等,怎么设置路径进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录d

2025年11月5日 00:30

js判断是否是日期格式(js 判断日期格式)

js判断是否是日期格式(js 判断日期格式)

本篇文章给大家谈谈js判断是否是日期格式,以及js 判断日期格式对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录js 判断日期格式javascript或jquery如何判断一个变量是否是yyyy/mm/dd格式如何用Javas

2025年12月27日 06:00

统计学样本量计算公式(样本量计算公式是什么)

统计学样本量计算公式(样本量计算公式是什么)

大家好,关于统计学样本量计算公式很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于样本量计算公式是什么的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录样本

2025年7月17日 01:30

distinction学位在国内(M.A.with distinction是什么学位)

distinction学位在国内(M.A.with distinction是什么学位)

各位老铁们好,相信很多人对distinction学位在国内都不是特别的了解,因此呢,今天就来为大家分享下关于distinction学位在国内以及M.A.with distinction是什么学位的问题知识,还望可以帮助大家,解决大家的一些困

2025年7月12日 04:15

time clock power loss(电脑显示clockpowerloss还有optionsnot)

time clock power loss(电脑显示clockpowerloss还有optionsnot)

各位老铁们好,相信很多人对time clock power loss都不是特别的了解,因此呢,今天就来为大家分享下关于time clock power loss以及电脑显示clockpowerloss还有optionsnot的问题知识,还望

2026年1月10日 12:00

在线代理服务器免费网页版(怎样使用代理服务器加速上网)

在线代理服务器免费网页版(怎样使用代理服务器加速上网)

本篇文章给大家谈谈在线代理服务器免费网页版,以及怎样使用代理服务器加速上网对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录怎样使用代理服务器

2026年1月6日 09:45

在 C语言中字符串的替换如何实现的!?js 字符串 replace 只能替换一个

在 C语言中字符串的替换如何实现的!?js 字符串 replace 只能替换一个

大家好,字符串替换相信很多的网友都不是很明白,包括在 C语言中字符串的替换如何实现的!也是一样,不过没有关系,接下来就来为大家分享关于字符串替换和在 C语言中字符串的替换如何实现的!的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我

2025年6月3日 05:30

后端开发简历怎么写(程序员个人简历怎么写)

后端开发简历怎么写(程序员个人简历怎么写)

大家好,后端开发简历怎么写相信很多的网友都不是很明白,包括程序员个人简历怎么写也是一样,不过没有关系,接下来就来为大家分享关于后端开发简历怎么写和程序员个人简历怎么写的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目

2025年6月9日 06:30

如何查看jdk安装位置(Linuxjdk的路径怎么能查看)

如何查看jdk安装位置(Linuxjdk的路径怎么能查看)

本篇文章给大家谈谈如何查看jdk安装位置,以及Linuxjdk的路径怎么能查看对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录Linuxjd

2026年4月12日 04:15

三阶魔方视频完整版(三阶魔方的复原方法视频)

三阶魔方视频完整版(三阶魔方的复原方法视频)

大家好,如果您还对三阶魔方视频完整版不太了解,没有关系,今天就由本站为大家分享三阶魔方视频完整版的知识,包括三阶魔方的复原方法视频的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录三阶魔方的复原方法视频三阶魔方最简单

2026年7月17日 20:45

sleep函数作用(linux 的sleep()、usleep()、nanosleep()函数)

sleep函数作用(linux 的sleep()、usleep()、nanosleep()函数)

大家好,关于sleep函数作用很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于linux 的sleep()、usleep()、nanosleep()函数的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题

2025年10月3日 01:00

实例化javabean动作名称(JSP对数据库的基本操作)

实例化javabean动作名称(JSP对数据库的基本操作)

本篇文章给大家谈谈实例化javabean动作名称,以及JSP对数据库的基本操作对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录JSP对数据库的基本操作如何在jsp中使用javabeanJSP页面如何使用JavaBeanJava

2025年9月7日 03:15

xml文件头(如何查看XML文件)

xml文件头(如何查看XML文件)

今天给各位分享如何查看XML文件的知识,其中也会对如何查看XML文件进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录如何查看XML文件文件头的常见文件的文件头XML报文头必须是这种格式么解决idea中xml头文

2025年9月17日 19:00

criticize词根(以ize为后缀的单词)

criticize词根(以ize为后缀的单词)

大家好,criticize词根相信很多的网友都不是很明白,包括以ize为后缀的单词也是一样,不过没有关系,接下来就来为大家分享关于criticize词根和以ize为后缀的单词的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧

2026年1月7日 19:30

prospect词组(将要的英文词短语精选合集)

prospect词组(将要的英文词短语精选合集)

大家好,如果您还对prospect词组不太了解,没有关系,今天就由本站为大家分享prospect词组的知识,包括将要的英文词短语精选合集的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录将要的英文词短语精选合集多音字

2026年3月24日 11:00

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索