c 线性链表程序
来源:互联网 发布:javascript 定义对象 编辑:程序博客网 时间:2024/05/22 13:23
list.h
#include <stdio.h>
#include <stdlib.h>
typedef char DATA;
struct linked_list{
DATA d;
struct linked_list *next;
};
typedef struct linked_list ELEMENT;
typedef ELEMENT *LINK;
编写一个函数创建一个链表,这函数返回一个指针,指向被创建的链表的头部
#include <stdlib.h>
#include "list.h"
LINK string_to_list(char s[])
{
LINK head;
if(s[0] == '/0')
{
return NULL;
}
else
{
head = malloc(sizeof(ELEMENT));
head->d = s[0];
head->next = string_to_list(s+1);
return head;
}
}
编写两个函数,一个计算链表的元素个数,另一个对链表的元素进行打印
int count(LINK head)
{
if(NULL == head)
{
return 0;
}
else
{
return (1+count(head->next));
}
}
void print_list(LINK head)
{
if(NULL == head)
{
printf("NULL");
}
else
{
printf("%c --> ", head->d);
print_list(head->next);
}
}
对两个链表进行连接,假设有两个链表a和b,其中a不为空。需要把b连接到a的尾部
void concatenate(LINK a, LINK b)
{
assert(NULL != a);
if(a->next == NULL)
{
a->next = b;
}
else
{
concatenate(a->next, b);
}
}
将q所指向的元素放在p1和p2所指向的元素之间
void insert(LINK p1, LINK p2, LINK q)
{
assert(p2 == p1->next);
p1->next = q;
q->next =p2;
}
使用free(),把存储空间返回给系统
void delete_list(LINK head)
{
if(NULL != head)
{
delete_list(head->next);
free(head);
}
}
- c 线性链表程序
- 线性链表C
- 关于线性表的C程序,语法问题?不会吧
- 线性链表(C语言实现)
- C语言实现线性顺序链表
- 线性链表的c语言实现
- 线性表(C++)
- 数据结构-线性表 (C++)
- Objective-C 线性表
- 数据结构线性表c
- 线性顺序表C
- 线性表--单链表(C++)
- C - 数据结构 - 线性表
- C线性表
- 线性表 C
- 线性表(C++)
- 线性表(C++)
- C构造线性表
- 字符串处理
- Js中 关于top、clientTop、scrollTop、offsetTop等
- Oracle的Index
- dwr一个例子
- 取完表中所有的字段
- c 线性链表程序
- windows中的消息
- 编程者说之C语言
- linux下OCI操作ORACLE数据库时乱码问题的解决
- 关于点阵字库在J2ME的实现。
- Data Types
- 使用VC2005 Express版时找不到msvcr80d.dll文件
- 用VC++实现console程序显示彩色文本
- 未引用参数,添加任务栏命令及其它...