先上题目:
给定一条单向链,设计程序把链倒过来,并输出结果。要求直接在这条链上完成倒置操作,只能增设有限的几个辅助变量。
老实说做这题花了很长了时间,其中94%的时间花在摆弄BCB怎么用 汗……
工程文件一堆没用的,这里就贴核心的文件代码
1.ReverseChain.cpp
1
//---------------------------------------------------------------------------2

3
#include <vcl.h>4
#pragma hdrstop5

6
#include "ReverseChain.h"7
#include "SingleChain.h"8
//---------------------------------------------------------------------------9
#pragma package(smart_init)10
#pragma resource "*.dfm"11
TForm1 *Form1;12
//---------------------------------------------------------------------------13
__fastcall TForm1::TForm1(TComponent* Owner)14
: TForm(Owner)15


{16

17
}18
//---------------------------------------------------------------------------19

20
void __fastcall TForm1::Button1Click(TObject *Sender)21


{22
void Reverse(SingleChain);23
if(Form1->Edit1->Text == "")24

{25
ShowMessage("请输入有效的字符串");26
Form1->Edit1->Text = "";27
return;28
}29
String input = Form1->Edit1->Text;30
char *ip = input.c_str();31
SingleChain sc(*(ip+0));32
for(int i = 1;*(ip+i)!= '\0';i++)33

{34
sc.push_back(*(ip+i));35
}36

37
sc.reverse(); //进行单链表的倒置38

39
String output;40
sc.transtostr(output);41
Form1->Edit2->Text = output;42
}43
//---------------------------------------------------------------------------44

2.SingleChain.h 基本大部分都是扒钱老师书上的
1 #include<iostream>
2
3 #ifndef SINGLECHAIN
4 #define SINGLECHAIN
5
6 struct Node
7 {
8 char Data;
9 Node *Next;
10 };
11
12 class SingleChain
13 {
14 public:
15 SingleChain();
16 SingleChain(char ini);
17 ~SingleChain();
18 void push_back(char temp);
19 void transtostr(String & str);
20 void reverse();
21
22 private:
23 Node *Head;
24 Node *Tail;
25 };
26
27 SingleChain::SingleChain()
28 {
29 Head = new Node;
30 Head->Next = NULL;
31 Tail = Head;
32 }
33
34 SingleChain::SingleChain(char ini)
35 {
36 Head = new Node;
37 Head->Data = ini;
38 Head->Next = NULL;
39 Tail = Head;
40 }
41
42 SingleChain::~SingleChain()
43 {
44 }
45
46 void SingleChain::push_back(char temp)
47 {
48 Node *p;
49 p = new Node;
50 p->Data = temp;
51 p->Next = NULL;
52 Tail->Next = p;
53 Tail = p;
54 }
55
56 void SingleChain::transtostr(String & str) //将链表转化为字符串
57 {
58 Node *ptr;
59 ptr = Head;
60 while( ptr != NULL)
61 {
62 str += ptr->Data;
63 ptr = ptr->Next;
64 }
65
66 }
67
68 void SingleChain::reverse()
69 {
70 Node *ptr; //构建指针
71 Node *temp;
72 temp = new Node; //构建临时节点
73 ptr = Head->Next;
74 Head->Next = NULL; //将首节点指向空
75 while(ptr != NULL)
76 {
77 temp = ptr->Next;
78 ptr->Next = Head; //指针转置
79 Head = ptr;
80 ptr = temp;
81 }
82 Head = Tail;
83 }
84
85
86 #endif
87
就这些,没了
我觉得我好傻呀
浙公网安备 33010602011771号