完蛋了,面向对象成了习惯,做啥题目都来这套。。。
很简单的问题,创建一个带头结点的循环链表。实现三个功能:
创建循环链表,删除循环链表中数据值为3的倍数的节点,显示链表内容。
给大家看看今天早上刚写的热乎的程序,其实就一个CircularLinkList类。CircularLinkList这个名称不大好,将就着用吧,暂时想不到。
第一版:
恩恩,要求干啥就干啥。这是第一反应,也是我交作业的作品。
分别由三个方法来实现
void createCircularLinkList();
void deleteCircularLinkList();
void displayCircularLinkList();
/*CircularLinkList.h*/
struct Node{
int data;
Node *next;
};
class CircularLinkList{
private:
Node *head;
Node *pointer;
public:
void createCircularLinkList();
void deleteCircularLinkList();
void displayCircularLinkList();
};
/*CircularLinkList.cpp*/
#include<iostream>
#include<fstream>
#include"CircularLinkList.h"
using namespace std;
void CircularLinkList::createCircularLinkList(){
Node *newNode;
int newData;
ifstream in("CircularLinkList.data");
//第一个节点的处理
if(in){
//从CircularLinkList.data读入第一个数据
in>>newData;
//创建新节点并让newNode指向新节点
newNode = new Node;
//为新节点赋值
newNode->data = newData;
//让头指针指向第一个节点
head = newNode;
//让pointer指向第一个节点
pointer = newNode;
}
for(; in; ){
//从CircularLinkList.data读入一个数据
in>>newData;
//创建新节点并让newNode指向新节点
newNode = new Node;
//为新节点赋值
newNode->data = newData;
//上一个节点指向新节点
pointer->next = newNode;
//pointer往前进一格
pointer = pointer->next;
}
//最后一个节点指向第一个节点
newNode->next = head;
}
void CircularLinkList::deleteCircularLinkList(){
Node *tmp;
//pointer指向头结点
pointer = head;
/*第一个节点先不判断*/
for(; ;){
//判断的是pointer后面的那个节点
if((pointer->next->data % 3) == 0){
//让tmp指向
补充:综合编程 , 其他综合 ,