c 언어: 순서 표 의 실현 (2) 현지 역 치, 질서 있 는 합병, 크기 조정.
3122 단어 데이터 구조프로 그래 밍 언어C 언어
#include<iostream>
#include<stdio.h>
#define LIST_INIT_SIZE 100
using namespace std;
struct Node
{
int *elem;
int Length;
int Listsize;
};
//
void Error(char *s); //
void printNode(Node &l); //
void InitNode(Node &L); //
void CreatNode(Node &l); //
void InvertNode(Node &l); //
void MeryNode(Node &L1, Node &L2,Node &L3);//
void AdjustNode(Node &l); //
//
void Error(char *s) //
{
cout << s << endl;
exit(1);
}
void InitNode(Node &L) //
{
L.elem = new int[LIST_INIT_SIZE];
if (!L.elem)
Error("Overflow!");
L.Length = 0;
L.Listsize = LIST_INIT_SIZE;
}
void CreatNode(Node &l) //
{
int n;
cout << " :";
cin >> n;
cout << " :" << endl;
for (int i = 0; i < n; i++)
{
cin >> l.elem[i];
l.Length++;
}
cout << " !" << endl;
}
void InvertNode(Node &l) //
{
int n = l.Length;
for (int i = 0; i < n / 2; i++)
{
int t = l.elem[n - i - 1];
l.elem[n - i - 1] = l.elem[i];
l.elem[i] = t;
}
}
void MeryNode(Node &L1, Node &L2,Node &L3)//
{
L3.Length = L1.Length + L2.Length;
L3.elem = new int[L3.Length];
if (!L3.elem)
Error("Overflow!");
int i = 0;
int j = 0;
int k = 0;
while ((i < L1.Length) && (j < L2.Length)) // L1 L2
{
if (L1.elem[i] <= L2.elem[j])
{
L3.elem[k] = L1.elem[i];
i++;
k++;
}
else
{
L3.elem[k] = L2.elem[j];
j++;
k++;
}
}
while (i < L1.Length) // L1 L3
{
L3.elem[k] = L1.elem[i];
k++;
i++;
}
while (j < L2.Length) // L2 L3
{
L3.elem[k] = L2.elem[j];
k++;
j++;
}
}
void AdjustNode(Node &l)//
{
int n = l.Length;
int *temp = new int[n];
int x = 0;
int y = n - 1;
for (int i = 0; i < n; i++)
{
if (l.elem[i] < 0)
{
temp[x] = l.elem[i];
x++;
}
else
{
temp[y] = l.elem[i];
y--;
}
}
for (int j = 0; j < n; j++)
{
l.elem[j] = temp[j];
}
delete[] temp;
}
void printNode(Node &l) //
{
for (int i = 0; i < l.Length; i++)
{
cout << l.elem[i] << " ";
}
cout << endl;
}
int main() //
{
Node t1,t2,t3;
//
InitNode(t1);
InitNode(t2);
InitNode(t3);
// t1
CreatNode(t1);
cout << " t1 :" << endl;
printNode(t1);
cout << " t1 :" << endl;
InvertNode(t1);
printNode(t1);
cout << " :" << endl;
AdjustNode(t1);
printNode(t1);
// t1
CreatNode(t2);
cout << " t2 :" << endl;
printNode(t2);
cout << " t2 :" << endl;
InvertNode(t2);
printNode(t2);
cout << " :" << endl;
AdjustNode(t2);
printNode(t2);
cout << " :" << endl;
MeryNode(t1, t2,t3);
printNode(t3);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.