您的位置:首页 > 编程语言 > C语言/C++

C++的一些笔试面试题总结

2014-02-24 16:09 429 查看
1.实现String函数的构造函数,拷贝构造函数,析构函数,赋值运算符重载

#include <IOSTREAM>
#include <STRING>
using namespace std;

class String
{
public:
//通用构造函数
String(const char * data);
//拷贝构造函数
String(const String & str);
//析构函数
~String();
//赋值运算符重载
String & operator = (const String & str);
private:
char * m_data;
};
//通用构造函数
String::String(const char * data)
{
if (data == NULL)
{
this->m_data = new char[1];
this->m_data[0] = '\0';
}
else
{
this->m_data = new char[strlen(data) + 1];
strcpy(this->m_data,data);
}
}
//拷贝构造函数
String::String(const String & str)
{
this->m_data = new char[strlen(str.m_data) + 1];
strcpy(this->m_data,str.m_data);
}
//赋值运算符重载
String & String::operator = (const String & str)
{
if (this == &str)
{
return *this;
}
delete[] this->m_data;
this->m_data = new char[strlen(str.m_data) + 1];
strcpy(this->m_data,str.m_data);
return *this;
}
//析构函数
String::~String()
{
delete[] this->m_data;
}

void main()
{
String str1("aaa");
String str2(str1);
String str3("bbb");
String str4("ccc");
str3 = str4;
}


2.已知链表结点的结构和头结点head

struct Node
{
int data;
Node *next;
};
写出链表逆序:

#include <IOSTREAM>
using namespace std;

typedef struct Node
{
int data;
Node *next;
}Node,*List;
//链表逆序
Node * ReverseList(Node *head)
{
if (head == NULL || head->next == NULL)
{
return head;
}
Node *p1 = NULL;
Node *p2 = head->next;
Node *p3 = p2->next;

while (p3 != NULL)
{
p1 = p3->next;
p3->next = p2;
p2 = p3;
p3 = p1;
}
head->next->next = NULL;
head->next = p2;
return head;
}
//输出链表
void PrintList(List head)
{
Node *p = head->next;
while (p != NULL)
{
printf("%d",p->data);
p = p->next;
}
printf("\n");
}

void main()
{
//链表头结点
Node *head;
head = (Node *)malloc(sizeof(Node));
head->data = -1;
head->next = NULL;
//链表添加五个数据
Node *p = head;
Node *q;
for (int i = 0;i < 5;i++)
{
//创建一个结点
q = (Node *)malloc(sizeof(Node));
q->data = i;
q->next = NULL;
//
p->next = q;
p = q;
}
//输出原链表
PrintList(head);
//输出倒序后的链表
head = ReverseList(head);
PrintList(head);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: