织梦CMS - 轻松建站从此开始!

罗索

最简单的单链表示例程序

jackyhwei 发布于 2010-07-17 21:13 点击:次 
参考了清华的《数据结构C语言版》。准备用在新的工程中作为底层,主要是使用的C,也使用了C++的一些东西,包括标准库,呵呵,有点不论不类了。
TAG:

参考了清华的《数据结构C语言版》。
准备用在新的工程中作为底层,主要是使用的C,也使用了C++的一些东西,包括标准库,呵呵,有点不论不类了。

#include <windows.h>//因为是一个windows程序,所以加上此行
#include <iostream>

using namespace std;

//定义需要用到的数据
#define REPLACE_NEW_TEXT_MAX 200
#define REPLACE_OLD_TEXT_MAX 20

//链表节点声明
struct Replace_Text_List
{
char NewText[REPLACE_NEW_TEXT_MAX];
char OldText[REPLACE_OLD_TEXT_MAX];
int index;
struct Replace_Text_List * Next;
};

typedef struct Replace_Text_List Node;
typedef Node * Link;

//清空链表
void free_list(Link Head)
{
//使用临时变量防止修改传入参数的指向
Link pointer;
int i=0;

//当前节点不为空
while(Head!=NULL)
{
i++;
pointer = Head;
//将当前节点指向下一个节点
Head = Head ->Next;
free(pointer);
}
cout<<"free node: "<<i<<endl;
}

//创建链表
//测试只使用一个old字符串
Link create_list(Link Head)
{
int DataNum;
char DataOld[REPLACE_OLD_TEXT_MAX];//临时字符串空间
Link New;//临时结构对象,主要用于保存新的节点地址
Link Pointer;//当前节点临时对象

//分配第一个节点
Head = (Link) malloc (sizeof(Node));
if(Head == NULL)
{
//!!内存分配不足
return 0;
}
else
{
//设置首节点信息
DataNum = 1;
cout<<"Please input the data old"<<endl;
scanf("%s",Head->OldText);
Head->index = DataNum;

//首节点Next指针为空
Head->Next = NULL;

//传递首节点
Pointer = Head;

while(1)
{
DataNum++;
//分配新的节点
New = (Link) malloc (sizeof(Node));
cout<<"Please input the data old"<<endl;
scanf("%s",DataOld);
if(DataOld[0] == '0'||DataOld[0] == NULL)
break;
New->index = DataNum;

strcpy(New->OldText,DataOld);

//当前节点的Next指针指向NULL
New->Next = NULL;
//上一节点的Next指针指向当前节点
Pointer->Next = New;
//保存新节点地址
Pointer = New;
}
}
return Head;
}

//输出链表
void print_list(Link Head)
{
//使用临时变量防止修改传入参数的指向
Link Pointer;
Pointer = Head;
while(Pointer!=NULL)
{
cout<<"Data Number : "<<Pointer->index<<endl;
cout<<"Data Old : "<<Pointer->OldText<<endl;
Pointer = Pointer->Next;
}
}

int main(void)
{
Link Head;

Head = create_list(Head);

if(Head != NULL)
{
print_list(Head);
free_list(Head);
}
return 0;
}

(汤米)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201007/9837.html]
本文出处:网络博客 作者:汤米
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容