单链表的链接存储结构实现

#include <iostream>
using namespace std;

class Node
{
public:
	int element;
	Node *next;
};

class List
{
private:
    Node *head;
public:
	List();//无参构造函数  
    List(int a[], int n); //有参构造函数  
    ~List();//析构函数
	void Length();   //求长度
	int Min();
	void Delete( int n);
	void Inserte( int m,int n);    //在第n个位置插入m
	void PrintList();//遍历操作
};

List::List()
{
	head = new Node;     ///生成一个头结点  
    head->next = NULL;   ///头结点的指针域置空
}
//此方法会生成逆序的链表
/*List::List(int a[],int n)
{
	int i;  
    Node* s;  
    head = new Node;  
    head->next = NULL;   ///初始化一个空链表  
    for (i = 0; i < n; i++) {  
        s = new Node;  
        s->element = a[i];   ///为每个数组元素建立一个数据域为a[i]的结点  
        s->next = head->next;  
        head->next = s;   ///将结点s插入到头指针之后  
    }  
}*/
//此方法会生成正常序链表
List::List(int a[],int n)  
{  
    head = new Node; //生成头结点  
    Node *r,*s;  
    r = head; //尾指针初始化  
    for (int i = 0; i < n; i++) {  
        s = new Node;   
        s->element = a[i]; //为每个数组元素建立一个结点  
        r->next = s;  
        r = s; //将结点s插入到终端结点之后  
    }
    r->next=NULL;
}  
List::~List()
{
	Node* q;  
    while (head) {   ///释放单链表每一个结点的存储空间
        q = head;   ///暂存被释放结点  
        head = head->next;   ///head指向被释放结点的下一个结点
        delete q;  
    }
}

void List::Length()
{
	Node *p;
	p=head;
	int count = 0;
    while (p) {
		p = p->next;
		count++;
	}
	cout << count-1 <<endl;
}

int List::Min()
{
	Node *s,*z;
	z = head->next;
	int min = 1000;
	while (z) {
		s = z;
		if (s->element < min) {
			min = s->element;
		}
		z = z->next;
	}
	cout << min <<endl;
	return min;
}

void List::Delete(int n)
{
	Node *b,*c;
	b = head;
	while (b) {
		if(b->element != n) {
			c = b;
			b = b->next;
		}
		else {
			c->next = b->next;
			b = b->next;
			return;
		}
	}
}

void List::Inserte(int m,int n)
{
	Node *q,*p,*s;
	s = new Node;
	p = head;
	for ( int i = 0; i < n; i++)
	{
		q = p;
		p = p->next;
	}
	s->element = m;
	s->next = q->next;
	q->next = s;
}

void List::PrintList()
{
    Node* p = head->next;  ///工作指针p初始化  
    while (p) {  
        cout << p->element;  
        p = p->next;   ///工作指针后移,注意不能写成p++  
    }  
} 

int main()
{
	int a[]={1,2,3,4,5};
	List B(a,5);
        B.Length();
	//int n = B.Min();
	//B.Delete(n);
	//B.Inserte(6,2);
	B.PrintList();
	cout << endl;

	return 0;
}


 

【员工管理系统】 问题描述:每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。系统能够完成员工信息的查询、更新、插入、删除、排序等功能。 基本要求:排序:按不同关键字,对所有员工的信息进行排序;查询:按特定条件查找员工;更新,按编号对某个员工的某项信息进行修改;插入,加入新员工的信息;删除,按编号删除已离职的员工的信息。 选作内容:实现图形用户界面。 通过链表实现 数据结构: #include #include #include #include #include using namespace std; typedef struct workers{ char name[15];//姓名 char department[18];//单位 char gender;//性别 unsigned int age;//年龄 unsigned long long telephone;//电话 unsigned long wage;//工资 unsigned long num;//职工号 struct workers *next; }*Linklist,Lnode; void frist_print() { printf("\t\t⊙▽⊙ ⊙▽⊙ ⊙▽⊙ ⊙▽⊙ ⊙▽⊙ ⊙▽⊙ \n\n"); printf("\t\t\t欢迎进入员工管理系统\n"); } void menu() { printf("\n\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("\t\t \t ◎1.创建员工信息\t \n"); printf("\t\t \t ◎2.插入员工信息\t \n"); printf("\t\t \t ◎3.修改员工信息\t \n"); printf("\t\t \t ◎4.删除员工信息\t \n"); printf("\t\t \t ◎5.查询员工信息\t \n"); printf("\t\t \t ◎6.员工信息排序\t \n"); printf("\t\t \t ◎7.显示员工信息\t \n"); printf("\t\t \t ◎8.员工工资情况\t \n"); printf("\n\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("注意:输入均以回车作为结束\n"); printf("please choise 1--8:\t "); //putchar(12); } void Inset(Linklist Head){ Linklist s,L; unsigned int agee; unsigned long wagee,numm;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值