企业网站建设资金预算表,wordpress 移动端 搜索,网站界面设计原则,恶意点击软件哪几种题目描述用C语言和类实现单链表#xff0c;含头结点属性包括#xff1a;data数据域、next指针域操作包括#xff1a;插入、删除、查找注意#xff1a;单链表不是数组#xff0c;所以位置从1开始对应首结点#xff0c;头结点不放数据类定义参考输入n第1行先输入n表示有n个…题目描述用C语言和类实现单链表含头结点属性包括data数据域、next指针域操作包括插入、删除、查找注意单链表不是数组所以位置从1开始对应首结点头结点不放数据类定义参考输入n第1行先输入n表示有n个数据接着输入n个数据第2行输入要插入的位置和新数据第3行输入要插入的位置和新数据第4行输入要删除的位置第5行输入要删除的位置第6行输入要查找的位置第7行输入要查找的位置输出n数据之间用空格隔开第1行输出创建后的单链表的数据每成功执行一次操作插入或删除输出执行后的单链表数据每成功执行一次查找输出查找到的数据如果执行操作失败包括插入、删除、查找等失败输出字符串error不必输出单链表样例查看模式正常显示查看格式输入样例1 -复制输出样例1语言: 编译选项主题: #includeiostream
using namespace std;
#define ok 0;
#define error -1;class ListNode
{
public:int data;ListNode* next;ListNode(){next NULL;}
};class LinkList
{
public:ListNode* head;//listcode类型的指针int len;LinkList(){head new ListNode();len 0;//表示整个链表的长度}~LinkList(){ListNode* p, * q;p head;//定义一个空指针先指向第一个节点的地址while (p ! NULL){q p;//指针q指向指针pp p-next;//p往后移一位delete q;//删除前面那个指针//直到删除到p为空指针为止}len 0;head NULL;}ListNode* LL_index(int i)//返回第i个节点的指针如果不存在则返回NULL{if (i-1len||i0){return NULL;}else{ListNode* p;p head-next;for(int j1;ji;j){p p-next;//指向后一个元素}return p;}}int LL_get(int i){if (i len || i 0){return error;}else{ListNode* p;p head-next;for (int j 1; j i; j){p p-next;//指向后一个元素}return p-data;}}int LL_insert(int i, int item){if (i - 1 len || i 0){return error;}else{ListNode* prehead, * new1, * after;ListNode* p head-next;for (int j 1; j i; j){pre p;//要得到转换的前一个位置p p-next;//p往后一位}new1 new ListNode();new1-data item;new1-next p;pre - next new1;len;return ok;}}int LL_del(int i){if (i - 1 len || i 0){return error;}else{//完全可以直接指向后两个直接跳过后面的一个来实现删除//但是代表删除的元素将会永远存在并且无法找回并删除ListNode* p, * prehead, * after;p head-next;for (int j 1; j i; j){pre p;//同样记录前面一个位置p p-next;}after p-next;//用after记录后一个位置p NULL;pre-next after;len--;return ok;}}void LL_display(){ListNode* p;p head - next;while (p){cout p-data ;p p-next;}cout endl;}};
int main()
{LinkList p;int num;int lenth;cin lenth;for (int i 1; i lenth; i){cin num;p.LL_insert(i, num);}p.LL_display();for (int i 0; i 2; i){cin lenth num;if (p.LL_insert(lenth, num)0){p.LL_display();}else{cout error endl;}}for (int i 0; i 2; i){cin lenth;if (p.LL_del(lenth)0){p.LL_display();}else{cout error endl;}}for (int i 0; i 2; i){int num;cin lenth;if (p.LL_get(lenth) 0){cout p.LL_get(lenth) endl;}else{cout error endl;}}return 0;
}