SL

#include<iostream>

using namespace std;
#define Mx 1000
typedef int Elemtype;
typedef struct
{
    Elemtype *top;
    Elemtype *base;
    int Maxsize;
}SqStack;

void InitStack(SqStack &S)
{
    S.base= new Elemtype[Mx];
    S.top = S.base;
    S.Maxsize = Mx;
}

void push(SqStack &S, Elemtype x)
{
    *(S.top++) = x;
//    S.top++;

}

void printfStack(SqStack &S)
{
    S.top;
    while(1)
    {
        cout << *(--S.top) << endl;
        if(S.top == S.base) break;
    }


}
int main()
{
    SqStack myStack;
    InitStack(myStack);
//    myStack.top = new Elemtype[Mx];
//    myStack.base = myStack.top;
//    myStack.Maxsize = Mx;
//    cout << myStack.Maxsize;
    Elemtype newelem;
    for(int i = 1; i <= 3; i++)
    {
        cout <<"input new Elemtype:";
        cin >> newelem;
        push(myStack, newelem);
    }

    //push(myStack, newelem);
    //cout << *(--myStack.top);
    printfStack(myStack);
}

这是课上的代码。

#include<iostream>

using namespace std;

typedef struct {
	int id;
	char name[20];
} ElemType;

typedef struct LNode {
	ElemType data;
	struct LNode *next;
} LNode, *LinkList;

void InitList(LinkList &); //链表初始化

void InsertListEnd(LinkList &, ElemType); //插入节点在尾部;

void OutPut(LinkList ); //输出函数

bool InsertList(LinkList &, int, ElemType );  //在第i个节点处插入数据
int main() {
	LinkList head; // p是指向链表的最后一个节点
	InitList(head);
	LinkList P;
	P = head;

	for (int i = 1; i <= 3; i ++) {
		ElemType e;
		cout << "请输入数据域的值:";
		cin >> e.id >> e.name;
		InsertListEnd(P, e);
	}

	/*for (LinkList i = head->next; i != NULL; i = i->next) {
		cout << i->data.id << ' ' << i->data.name << endl;
	}*/
	
	OutPut(head);
	
	for (int i = 1; i <= 3; i ++) {
		ElemType e;
		cout << "请输入数据域的值和插入位置:";
		cin >> e.id >> e.name;
		int x;
		cin >> x;
		if (InsertList(head, x, e))
			puts("插入合法");
		else puts("插入不合法");
	}

	/*for (LinkList i = head->next; i != NULL; i = i->next) {
		cout << i->data.id << ' ' << i->data.name << endl;
	}*/
	OutPut(head);
	return 0;
}

void InitList(LinkList &L) {
	L = new LNode;
	L->next = NULL;
}

/*
void InsertListEnd(LinkList &L, ElemType a) {
	LinkList p = L;
	while(p->next != NULL) {
		p = p->next;
	}
	LinkList q;
	q = new LNode;
	q->data = a;
	p->next = q;
	q->next = NULL;

}
*/

void InsertListEnd(LinkList &L, ElemType a) {
	LinkList q;
	q = new LNode;
	q->data = a;
	q->next = L->next;
	L->next = q;

	L = q;
}

void OutPut(LinkList head) {
	for (LinkList i = head->next; i != NULL; i = i->next) {
		cout << i->data.id << ' ' << i->data.name << endl;
	}
}

bool InsertList(LinkList &L, int i, ElemType a) {
	int t = 1;
	LinkList p = L;
	while (p->next != NULL && t < i) {
		p = p->next;
		t ++;
	}
	if (t < i) return false;
	LinkList q;
	q = new LNode;
	q->data = a;
	q->next = p->next;
	p->next = q;
	return true;
}
#include<bits/stdc++.h>

using namespace std;

typedef struct {
	int id;
	char name[20];
} ElemType;

typedef struct LNode {
	ElemType data;
	struct LNode *next;
} LNode, *LinkList;

void InitList(LinkList &); //链表初始化

void InsertListEnd(LinkList &, ElemType); //插入节点在尾部;

void OutPut(LinkList ); //输出函数

bool InsertList(LinkList &, int, ElemType );  //在第i个节点处插入数据

bool DeleteI(LinkList &, int ); // 删除第i个节点

LinkList ReverseLink(LinkList L);//逆转链表

void Merge(LinkList &La, LinkList &Lb, LinkList &Lc); //链表合并

bool GetMail(LinkList L, int i, ElemType &e); //返回第i个节点的数据域


int main() {
	LinkList head1, head2; // p是指向链表的最后一个节点
	InitList(head1);
	InitList(head2);
	LinkList P1, P2;
	P1 = head1, P2 = head2;
    int n;
    puts("请输入head1你要添加数据的个数:");
    scanf("%d", &n);
    ElemType e;
	for (int i = 1; i <= n; i ++) {
		cout << "请输入数据域的值:";
		cin >> e.id >> e.name;
		InsertListEnd(P1, e);
	}
	puts("请输入head2你要添加数据的个数:");
    scanf("%d", &n);
	for (int i = 1; i <= n; i ++) {
		cout << "请输入数据域的值:";
		cin >> e.id >> e.name;
		InsertListEnd(P1, e);
	}
	/*int c;
	puts("请输入你要查询的节点的号码:");
	scanf("%d", &c);
	ElemType z;
	if(GetMail(head, c, z)) {
        puts("查询正确:");
        cout << z.id << ' ' << z.name << endl;
	}
	else {
        puts("查询错误");
	}*/

	/*for (LinkList i = head->next; i != NULL; i = i->next) {
		cout << i->data.id << ' ' << i->data.name << endl;
	}*/

	//OutPut(head);

	/*for (int i = 1; i <= 3; i ++) {
		ElemType e;
		cout << "请输入数据域的值和插入位置:";
		cin >> e.id >> e.name;
		int x;
		cin >> x;
		if (InsertList(head, x, e))
			puts("插入合法");
		else puts("插入不合法");
	}*/

	/*for (LinkList i = head->next; i != NULL; i = i->next) {
		cout << i->data.id << ' ' << i->data.name << endl;
	}*/
	//OutPut(head);
   /* int i;
    puts("请输入你想删除节点的编号:")
    scanf("%d", &i);
	if(DeleteI(head, i)) {
        puts("删除成功");
	}
	else puts("删除失败");*/

    //LinkList s;
    //s = ReverseLink(head);
    //OutPut(s);

	//OutPut(head);
	LinkList head;
	Merge(head1, head2, head);
	OutPut(head);
	return 0;
}

void InitList(LinkList &L) {
	L = new LNode;
	L->next = NULL;
}

/*
void InsertListEnd(LinkList &L, ElemType a) {
	LinkList p = L;
	while(p->next != NULL) {
		p = p->next;
	}
	LinkList q;
	q = new LNode;
	q->data = a;
	p->next = q;
	q->next = NULL;

}
*/

void InsertListEnd(LinkList &L, ElemType a) {
	LinkList q;
	q = new LNode;
	q->data = a;
	q->next = L->next;
	L->next = q;

	L = q;
}

void OutPut(LinkList head) {
	for (LinkList i = head->next; i != NULL; i = i->next) {
		cout << i->data.id << ' ' << i->data.name << endl;
	}
}

bool InsertList(LinkList &L, int i, ElemType a) {
	int t = 1;
	LinkList p = L;
	while (p->next != NULL && t < i) {
		p = p->next;
		t ++;
	}
	if (!p ||t > i) return false;
	LinkList q;
	q = new LNode;
	q->data = a;
	q->next = p->next;
	p->next = q;
	return true;
}


bool DeleteI(LinkList &L, int i) {
    int t = 1;
    LinkList p;
    p = L;

    while(p && t < i) {
        p = p->next;
        t ++;
    }
    if(!p || !p->next || t > i ) return false;
    LinkList d;
    d = p ->next;
    p->next = p->next->next;
    free(d);
    return true;
}

LinkList ReverseLink(LinkList L) {
    LinkList p;
    InitList(p);
    L = L->next;
    while(L) {
        LinkList s;
        s = L->next;
        L->next = p->next;
        p->next = L;
        L = s;
    }
    return p;

}

void Merge(LinkList &La, LinkList &Lb, LinkList &Lc) {
    LinkList pc, pa, pb;
    pc = Lc = La;
    pa = La->next, pb = Lb->next;
    while(pa && pb) {
        if(pa->data.id < pb->data.id) {
            pc->next = pa;
            pc = pa;
            pa = pa->next;
        }
        else {
            pc->next = pb;
            pc = pb;
            pb = pb->next;
        }
    }
    if(pa) pc->next = pa;
    else pc->next = pb;
    delete Lb;
}

bool GetMail(LinkList L, int i, ElemType &e) {
    int t = 1;
    LinkList p = L->next;
    while(p && t < i) {
        p = p->next;
        t ++;
    }
    if(!p || t > i) return false;
    e = p->data;
    return true;

}

kejian

posted @ 2022-09-28 12:43  Luli&  阅读(260)  评论(0)    收藏  举报