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
没有什么能阻止我对知识的追求!!!

浙公网安备 33010602011771号