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

C++编程 数据结构

发布网友 发布时间:2022-05-26 13:46

我来回答

1个回答

热心网友 时间:2023-10-20 06:49


#include <iostream>

using namespace std;


typedef struct Node

{

int data;

struct Node *next;

}LNode, *LinkList;


// (1)编写函数建立循环单链表CreateLinkList(int n), 函数返回值类型为LinkList。

LinkList CreateLinkList(int n)

{

/*按照升序输入n个整数,建立带表头结点的循环单链表*/

LinkList header = new Node(), nowNode = header;

header->data = n;//表头结点,存放链表长度

if (header == NULL)//检查内存申请是否成功

{

cout << "内存申请失败..";

return NULL;

}

cout << "输入" << n << "个升序的整数:";

for (int i = 0; i < n;++i)

{

nowNode->next = new Node();

nowNode = nowNode->next;

cin >> nowNode->data;

}

nowNode->next = header;//将末结点指向头结点,形成循环单链表

return header;

}


// (2)  编写查找函数QueryLinkList(LinkList *L, int x)实现查找并插入功能,函数返回值类型int。

int QueryLinkList(LinkList *L, int x)

{

/*查找值为x的元素,若查找成功返回1,否则返回0,并把x插入到相应的位置。*/

LinkList nowNode = (*L)->next;

LinkList preNode = nowNode;//上一结点

while (nowNode!=*L)

{

if (nowNode->data == x)

{

return 1;

}

else if (preNode->data>x&&x<nowNode->data)//x小于链表首元素

{

LinkList node = new Node();

node->data = nowNode->data;

node->next = nowNode->next;

nowNode->data = x;

nowNode->next = node;

return 0;

}

else if (preNode->data<x&&x<nowNode->data)//x应插入到链表中间

{

LinkList node = new Node();

node->data = x;

node->next = nowNode;

preNode->next = node;

return 0;

}

preNode = nowNode;

nowNode = nowNode->next;

}


//x大于链表中所有元素

LinkList node = new Node();

node->data = x;

node->next = nowNode;

preNode->next = node;

return 0;

}


// (3)编写函数Display(LinkList L), 输出线性表中的元素。

void Display(LinkList L)

{

LinkList nowNode = L->next;

while (nowNode!=L)

{

cout << nowNode->data << " ";

nowNode = nowNode->next;

}

}


void main()

{

int n;

cout << "输入元素个数n(n>0):";

cin >> n;


LinkList header= CreateLinkList(n);

while (true)

{

int x;

cout << "\n\n输入待查找的元素值x:";

cin >> x;

cout <<QueryLinkList(&header, x) << endl;

Display(header);

}

}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
5数字寓意是什么意思 如何在 iPhone14上恢复已删除的照片? 红井源 醇香胡麻油 2.5L-购买最佳价格 python如何实现修改当前文件夹下所有文件名称? python遍历输出所有文件 用Python遍历指定文件夹下所有文件 Python:读取指定路径下的文件,含子文件夹,可指定文件类型 谁有治疗网瘾的好方法? 孩子有网瘾又叛逆怎么办 退伍证名字错了怎么办 数据结构在编程中的作用是什么?几种编程语言的数据结构一样么?不一样的话有什么区别?应该怎么学这个东_百度问一问 91天秤P和85白羊T,星座的速配指数是多少?(les) 童鞋二十八公分的鞋子是多少码 速度回答! appcan APP开发软件需要编程代码,我该如何学习这个软件?有没有新手教程! 跟男朋友手机聊天赌什么可以 英语B级证书的全称是什么? 什么是英语B级? 跟别人手机聊天,,一个男人说跟谁聊天,还怕我看到了么?是什么意思_百度问一问 大学英语B级和大学英语三级是一个概念吗? 用薇基茵抑菌凝胶期间可以同房吗 想看一下人体的构造图,最好附带解说,越详细越好,谢谢! 感同身受的相近的成语 数控编程ug软件去哪里下载 这种中石油加油卡怎么使用? 翻得好翻译公司的服务范围 《天工开物》主要讲了什么? 獾的拼音是什么?急快 如何提炼黄铜中的锌 獾是拼音 獾的读音 各种编程语言的数据结构都不一样吗 数据结构 编程 数据结构和编程到底有什么关系呢? 气喘吁吁的反义词 诲人不倦反义词 惠人不倦的反义词近义词 诲人不倦 气喘吁吁是心平气和的反义词吗? 情同手足,心心相印,肝胆相照,贫贱之交,患难之交,呕心沥血,诲人不倦的意思和近反义词 学而不厌,__ 误人子弟反义词是什么 诲人不倦的倦是什么意思诲人不倦释义 气喘吁吁和气定神闲是反义词吗 古人谈读书的近义词和反义词? “误人子弟”的反义词是什么? “误人子弟”的反义词是什么? 晚上睡梦中梦见与人打架或有肢体动作,经常打伤睡在旁边的人是怎么回事?是病吗?有办法治吗?丨 做梦人家绑架我,我打着旁边睡着那个人是怎么了? 做梦跟人打架,打了睡在旁边的老婆,咋回事 做梦梦到打架结果真的打到身边的人是怎么回事?