?? 實習2.cpp
字號:
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
struct data
{
int n;
int e;
data * next;
data * pre;
};
void delZero(data * & head)
{
data * p = head->next , * junk;
while(p)
{
if(p->n == 0)
{
p->pre->next = p->next;
p->next->pre = p->pre;
junk = p;
p = p->next;
delete junk;
}
else
{
p = p->next;
}
}
}
void showResult(data * & FirstHead , data * & SecondHead)
{
data * FirstP = FirstHead->next , * SecondP = SecondHead->next;
while(FirstP)
{
cout<<FirstP->n<<" "<<FirstP->e<<" ";
FirstP = FirstP->next;
}
cout<<endl;
while(SecondP)
{
cout<<SecondP->n<<" "<<SecondP->e<<" ";
SecondP = SecondP->next;
}
cout<<endl;
}
void addElement(data * FirstElement , data * & SecondElement)
{
FirstElement->n += SecondElement->n;
}
void addLink(data * & FirstHead , data * & SecondHead)
{
data * FirstP = FirstHead->next , * SecondP = SecondHead->next;
data * temp, * PreRecord;
while(SecondP)
{
if(FirstP && SecondP)
{
if(FirstP->e == SecondP->e)
{
addElement(FirstP , SecondP);
PreRecord = FirstP;
FirstP = FirstP->next;
SecondP = SecondP->next;
}
else if(FirstP->e < SecondP->e)
{
PreRecord = FirstP;
FirstP = FirstP->next;
}
else if(FirstP->e > SecondP->e)
{
temp = new data;
temp->e = SecondP->e;
temp->n = SecondP->n;
FirstP->pre->next = temp;
temp->pre = FirstP->pre;
temp->next = FirstP;
FirstP->pre = temp;
SecondP = SecondP->next;
}
}
else if(!FirstP)
{
temp = new data;
temp->e = SecondP->e;
temp->n = SecondP->n;
PreRecord->next = temp;
temp->pre = PreRecord;
PreRecord = PreRecord->next;
SecondP = SecondP->next;
}
}
}
void main()
{
data * FirstHead = new data , * SecondHead = new data;
data * temp1 = new data , * temp2 = new data , * p1 , * p2;
FILE * inf;
int In1,In2;
FirstHead->next = temp1;
temp1->pre = FirstHead;
SecondHead->next = temp2;
inf = fopen("實習2數據.txt" , "r");
fscanf(inf , "%d" , &In1);
fscanf(inf , "%d" , &In2);
while(!(In1 == 0 && In2 == 0))
{
temp1->n = In1;
temp1->e = In2;
p1 = temp1;
temp1 = new data;
p1->next = temp1;
temp1->pre = p1;
fscanf(inf , "%d" , &In1);
fscanf(inf , "%d" , &In2);
}
p1->next = NULL;
fscanf(inf , "%d" , &In1);
fscanf(inf , "%d" , &In2);
while(!(In1 == 0 && In2 == 0))
{
temp2->n = In1;
temp2->e = In2;
p2 = temp2;
temp2 = new data;
p2->next = temp2;
fscanf(inf , "%d" , &In1);
fscanf(inf , "%d" , &In2);
}
p2->next = NULL;
fclose(inf);
addLink(FirstHead , SecondHead);
delZero(FirstHead);
showResult(FirstHead,SecondHead);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -