首先list.h
#ifndef LIST_H
#define LIST_H
#include <string>
#include <iostream>
#include <cassert>
using namespace std;
typedef struct NODE node;
typedef struct NODE* nodeptr;
typedef string::size_type size_type;
struct NODE
{
nodeptr link;
int value;
};
class List
{
private :
nodeptr head;
nodeptr tail;
int charToInt(char ch)
{
return ((int)ch - 48);
}
public :
List();
void create(string& str);
void insertBack(int value);
void reverse();
List& operator+(List& list);
void show();
};
#endif
//构造函数,默认构造一个只有头结点的链表
List :: List()
{
head = (nodeptr)operator new(sizeof(node));
assert(head != NULL);
head -> link = NULL;
head -> value = 0;
tail = NULL;
}
//根据传入的大数字符串创建一个相对应的链表
void List :: create(string& str)
{
for(size_type i = 0; i < str.size(); ++ i)
{
insertBack(charToInt(str[i]));
}
}
//每次都在链表的后面插入
void List :: insertB