[ create a new paste ] login | about

Link: http://codepad.org/qvb8gM4Z    [ raw code | output | fork ]

C++, pasted on Oct 30:
#include <iostream>	
using namespace std; 	
class Student	
{
	int student_id;
	char student_name[40];
public:
	friend istream& operator >> (istream& in, Student& obj)
	{
		in >> obj.student_id >> obj.student_name;
		return in;
	}
	friend ostream& operator << (ostream& out, Student& obj)
	{
		out << obj.student_id << '\t' << obj.student_name;
		return out;
	}
};

struct link	
{
	Student data;	
	link *next;	
};

class linklist	
{
	link *firstPtr;	
	link *lastPtr;	
public:
	linklist() { firstPtr = lastPtr = NULL; }	
	void addFront (Student obj);	
	void addBack (Student obj);	
	void delFront();	
	void delBack();	
	void showItem();	
};

void linklist::addFront (Student obj)	
{
	link *newPtr = new link;
	newPtr->data = obj;
	if (firstPtr == NULL) {
		firstPtr = lastPtr = newPtr;
		lastPtr->next = NULL;
	}
	else {
		newPtr->next = firstPtr;
		firstPtr = newPtr;
	}
}

void linklist::addBack (Student obj)	
{
	link *newPtr = new link;
	newPtr->data = obj;
	if (firstPtr == NULL) {
		firstPtr = lastPtr = newPtr;
		lastPtr->next = NULL;
	}
	else {
		lastPtr->next = newPtr;
		lastPtr = newPtr;
		lastPtr->next = NULL;
	}
}

void linklist::delFront()	
{
	link *tempPtr = firstPtr;
	if (firstPtr == NULL) 
		return;
	else {
		firstPtr = firstPtr->next;
		delete tempPtr;
	}
}

void linklist::delBack()	
{
	link *tempPtr = lastPtr;
	if (firstPtr == NULL) 
		return;
	else {
		if (firstPtr == lastPtr)
			firstPtr = lastPtr = NULL;
		else {
			link *currentPtr = firstPtr;
			while(currentPtr->next != lastPtr)
				currentPtr = currentPtr->next;
			lastPtr = currentPtr;
			lastPtr->next = NULL;
		}
	}
	delete tempPtr;
}

void linklist::showItem()	
{
	link *currentPtr = firstPtr;
	while( currentPtr != NULL)
	{
		cout << currentPtr->data << endl;
		currentPtr = currentPtr->next;
	}
}

int main()
{
	Student studata;	
	linklist ls;	
	char n;

	cout << "1.插入第一項\n2.插入最後項\n"
		 << "3.刪除第一項\n4.刪除最後項\n"
		 << "0.結束\n";
	while(1)
	{
		cout << "請選擇(1-4 或 0): ";
		cin >> n;
		switch (n) 
		{
			case '1':
				cout << "請輸入學號與姓名:" ;
				cin >> studata;
				ls.addFront(studata);
				ls.showItem();
				break;
			case '2':
				cout << "請輸入學號與姓名:" ;
				cin >> studata;
				ls.addBack(studata);
				ls.showItem();
				break;
			case '3':
				ls.delFront();
				ls.showItem();
				break;
			case '4':
				ls.delBack();
				ls.showItem();
				break;
			case '0':
				return 0;
		}
		cout << endl;
	}
}


Output:
1
2
Line 28: error: ISO C++ forbids declaration of 'link' with no type
compilation terminated due to -Wfatal-errors.


Create a new paste based on this one


Comments: