对单链表进行 删除、插入、排序 等操作。
来源:互联网 发布:品茗软件破解版 编辑:程序博客网 时间:2024/05/08 21:51
#define FALSE 0
#define TRUE 1
typedef struct NODE{
struct NODE *link;
int value;
}NODE;
int length( NODE *head )
{
NODE *current;
int length = 0;
current = head;
while( current != NULL )
{
current = current->link;
length++;
}
return length;
}
NODE *create()
{
NODE *head, *p, *s;
int value, cycle = 1;
head = (NODE *)malloc( sizeof(NODE) );
p = head;
while( cycle )
{
printf( "/nPlease input the data:" );
scanf( "%d", &value );
if( value != 0 )
{
s = (NODE *)malloc( sizeof( NODE ) );
s->value = value;
printf("/n s->value = %d", s->value);
p->link = s;
p = s;
}
else
cycle = 0;
}
head = head->link;
p->link = NULL;
return head;
}
void print( NODE *head )
{
NODE *p = NULL;
int n = 0;
n = length( head );
printf( "/n Now, These %d records are:/n", n );
p = head;
while( p != NULL )
{
printf("/n p->value %d", p->value);
p = p->link;
}
printf("/n");
}
NODE *reserve( NODE *head )
{
NODE *p1, *p2, *p3;
printf("/nEntry reserve() ======= begin !!!!");
if( head == NULL || head->link == NULL )
return head;
p1 = head;
p2 = p1->link;
while( p2 )
{
p3 = p2->link;
p2->link = p1;
p1 = p2;
p2 = p3;
}
head->link = NULL;
head = p1;
printf("/nEntry reserve() ======= end !!!!");
return head;
}
int sll_insert( NODE **rootp, int new_value )
{
register NODE *current;
register NODE *_new;
printf("/nEntry sll_insert() ======= begin !!!!");
while( (current = *rootp) != NULL && current->value < new_value )
{
rootp = ¤t->link;
}
_new = (NODE *)malloc( sizeof(NODE) );
if( _new == NULL )
return FALSE;
_new->value = new_value;
_new->link = current;
*rootp = _new;
printf("/nEntry sll_insert() ======= end !!!!");
return TRUE;
}
NODE *del( NODE *head, int value )
{
NODE *p1, *p2;
p1 = head;
printf("/nEntry del() ======= begin !!!!");
while( p1->link != NULL && value != p1->value )
{
p2 = p1;
p1 = p1->link;
}
if( value == p1->value )
{
if( p1 == head )
{
head = p1->link;
free( p1 );
}
else
{
p2->link = p1->link;
free( p1 );
}
}
else
{
printf( "/n %d is could not been found", value );
return NULL;
}
printf("/nEntry del() ======= end !!!!");
return head;
}
NODE *sort( NODE *head )
{
NODE *p;
int temp;
int n;
int i, j;
printf("/nEntry sort() ======= begin !!!!");
n = length(head);
if( head == NULL || head->link == NULL )
return head;
for( j = 1; j < n; j++ )
{
p = head;
for( i = 0; i < n-j; i++ )
{
if( p->value > p->link->value )
{
temp = p->value;
p->value = p->link->value;
p->link->value = temp;
}
p = p->link;
}
}
printf("/nEntry sort() ======= end !!!!");
return head;
}
int main(void)
{
NODE *head = NULL;
NODE *_new = NULL;
NODE *returnp = NULL;
NODE *delp = NULL;
NODE *sortp = NULL;
int length = 0;
head = create();
print( head );
_new = reserve( head );
print(_new);
sll_insert( &_new, 100);
print( _new );
delp = del( _new, 4 );
print( delp );
sortp = sort(delp);
print( sortp );
return 0;
}
- 对单链表进行 删除、插入、排序 等操作。
- 对五个数进行插入,删除,排序等操作.
- 单链表操作,创建,遍历,插入,删除,排序等操作
- 单链表插入删除等操作
- 单链表的创建、插入、删除等操作
- 单链表的初始化,插入删除等操作
- 单链表的创建,插入删除等操作
- 单链表的创建、插入删除等操作
- 对XML进行简单的查询,插入,删除,编辑操作
- 基础--JAVA对Mysql进行连接、插入、修改、删除操作
- JAVA对MYSQL进行连接、插入、修改、删除操作
- C++中对字符串进行插入、替换、删除操作
- JAVA对Mysql进行连接、插入、修改、删除操作
- Flex中对array 进行添加、删除等操作
- 对文件进行 创建 复制 移动 删除等操作
- c语言实现单链表的操作:创建,删除,插入,反转, 排序等
- 单链表的插入,删除排序操作
- 对vector等STL标准容器进行排序操作
- ArcEngine读取数据
- FindFirstFile 获得的文件创建时间FILETIME 是UAC时间
- 必须掌握的8个DOS命令
- 使用下拉列表显示图片
- CSS经典实用技巧10招
- 对单链表进行 删除、插入、排序 等操作。
- 大扇区硬盘的出现与分析
- 网页设计注意事项
- 一个程序员应该具备的基础知识和概念
- 如何将EXCEL表中的测试需求、测试用例、缺陷记录直接导出到TD中
- WM消息常量
- Blog新域名启用 www.jimjin.cn 欢迎大家光临
- 整形美容网站的品牌建设之路
- 实现IQProvider