📄 dlist.c
字号:
/*
* 作者:antigloss
* 最后修改:05-8-17 1:05
* 蚂蚁的 C/C++ 标准编程
* cpp.ga-la.com
*/
#include <stdio.h>
#include <stdlib.h>
#include "../header/dlist.h"
/* begin of Delete 1:05*/
void Delete(LinkList L, unsigned i, unsigned j) /* 删除数据 */
{
LinkList T, A, B = L;
if ( !L || !i ) {
return;
}
while ( --i ) {
L = L->next;
if ( !( L - B) ) {
break;
}
}
if ( i && !( L - B) ) {
return;
}
for ( T = L->next; j && ( T - B ); --j ) {
L->next = T->next;
A = T->next;
A->prior = L;
free( T );
T = L->next;
}
} /* end of Delete */
/* begin of Destroy 05-8-17 00:15 */
void Destroy( LinkList L )
{
LinkList p = L, n = L->next;
if ( !L ) {
return;
}
while ( L != n ) {
free( p );
p = n;
n = n->next;
}
free( p );
} /* end of Destroy */
/* begin of Disp 05-8-17 00:20 */
void Disp(LinkList L) /* 显示数据 */
{
LinkList T = L;
for ( L = L->next; L - T; L = L->next ) {
printf( "%c", L->data );
}
printf( "\n" );
} /* end of Disp */
/* begin of FormList 05-8-16 00:15 */
LinkList FormList( void ) /* 正向形成链表 */
{
LinkList h, head, end;
int temp;
if ( !( h = head = malloc(sizeof *head) ) ) {
return NULL;
}
h->next = h->prior = head;
while ( ( temp=getchar() ) != '\n' && temp != EOF ) {
if ( !( end = malloc(sizeof *head) ) ) {
Destroy( head );
return NULL;
}
end->data = temp;
end->next = head;
end->prior = h;
h->next = end;
h = end;
head->prior = end;
}
return head;
} /* end of FormList */
/* begin of Insert 05-8-17 00:50 */
int Insert(LinkList L, unsigned i) /* 插入数据 */
{ /* 若单链表没有头结点,需对在第一个结点之前进行插入的情况单独进行处理。很麻烦 */
LinkList T, A = L;
int temp;
if ( !L || !i ) {
return 0;
}
while ( --i ) {
L = L->next;
if( !( L - A ) ) {
break;
}
}
if ( i && !( L - A ) ) {
return 0;
}
printf( "请输入您要插入的数据:" );
while ( ( temp = getchar() ) != '\n' && temp != EOF ) {
if ( !( T = malloc( sizeof *T ) ) ) {
Destroy( L );
return 0;
}
T->data = temp;
T->next = L->next;
A = L->next;
A->prior = T;
T->prior = L;
L->next = T;
L = T;
}
return 1;
} /* end of Insert */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -