
- #include
- #include
- using namespace std;
- struct LinkNode//链表结构体
- {
- int val;
- LinkNode *next;
- LinkNode(int val):val(val),next(nullptr){}
- };
- LinkNode *_dummyHead= new LinkNode(0);//头节点
- void show(LinkNode *head)//展示
- {
- LinkNode *cur=head;//代替头节点,方便遍历
- while(cur!=nullptr)
- {
- cout<
val<<" "; - cur=cur->next;
- }
- cout<
-
- }
-
- LinkNode* reverse(LinkNode *head)//反致链表
- {
- LinkNode *temp;
- LinkNode *per=nullptr;//前置节点,挺不好想,需要temp,per,cur
- LinkNode *cur=head;
- while(cur)
- {
- temp=cur->next;//保存下一个节点
- cur->next=per;//开始反制了,先节点指向前节点
- per=cur;
- cur=temp;
- }
- return per;
- }
-
- int main()
- {
- int n, num;
-
- while(cin>>n)
- {
- if(n==0)
- {
- cout<<"list is empty"<
- continue;
- }
-
- LinkNode *cur=_dummyHead;//此处定义应在循环里面
- while(n--)
- {
- cin>>num;
- LinkNode *newnode= new LinkNode(num);
- cur->next=newnode;
- cur=cur->next;
- }
- show(_dummyHead->next);
- show(reverse(_dummyHead->next));
- }
-
-
-
-
- return 0;
- }
下面这道题,希望你手到擒来 ,两题结构上基本一致,除细微删除输出,可以建立数组,将不重复数字加入,每次判断是否有输出资格,用flag来标记,这里我为什么使用vector容器,因为之前建立的固定数组,总是判定为可能存在数字越界问题,主要因为输入的数组大小也不固定。num.push_back将数字加入到容器尾部,不影响输出,num数组只作为重复性检查
- #include
- #include
- using namespace std;
- struct linknode {
- int val;
- linknode* next;
- linknode(int val) :val(val), next(NULL) {}
- };
- linknode* dummyhead = new linknode(0);
- void deletemult(linknode* head)
- {
- linknode* cur = head;
- vector<int> num;
- int count = 0;
- while (cur != nullptr)
- {
- int flag = 1;
- for (int j = 0; j < count; j++)
- {
- if (num[j] == cur->val)
- {
- flag = 0;
- break;
- }
- }
- if (flag)
- {
- //cout<
val<<" "; - num.push_back(cur->val);
- cout <
val << " "; - count++;
- }
- cur = cur->next;
- }
- cout << endl;
-
- }
- void show(linknode* head)
- {
- linknode* cur = head;
- while (cur != NULL)
- {
- cout << cur->val << " ";
- cur = cur->next;
- }
- cout << endl;
- }
-
- int main()
- {
- int n, m;
- while (cin >> n)
- {
- if (n == 0)
- {
- cout << "list is empty" << endl;
- continue;
- }
- linknode* cur = dummyhead;
- while (n--)
- {
- cin >> m;
- linknode* newnode = new linknode(m);
- cur->next = newnode;
- cur = cur->next;
- }
- show(dummyhead->next);
- deletemult(dummyhead->next);
- }
- return 0;
- }
-
相关阅读:
【Numpy】一文向您详细介绍 np.abs()
【ElasticSearch】基于 Java 客户端 RestClient 实现对 ElasticSearch 索引库、文档的增删改查操作,以及文档的批量导入
C++的自定义结构——枚举、结构体、联合体
Flask 学习99-Flask-SocketIO 快速入门与使用
Flux脚本语言基础使用-函数定义(InFluxDB 查询语言)
API攻防-接口安全&SOAP&OpenAPI&RESTful&分类特征导入&项目联动检测
C# 编写一个简单易用的 Windows 截屏增强工具
新手入门深度学习 | 3-6:优化器optimizers
SAAS堡垒机安全吗?为什么性价比那么高?
拒绝“爆雷”!GaussDB(for MySQL)新上线了这个功能
-
原文地址:https://blog.csdn.net/m0_62512076/article/details/133000431