⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlist.c

📁 c++链表的一些基本操作 适合初学者 用了头文件
💻 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 + -