数据结构线性表的链式表示和实现(C语言).doc
文本预览下载声明
/*
创建一个链表,
实现对链表的创建,插入/追加,删除等操作
*/
# include stdio.h
# include stdlib.h
# include malloc.h
//创建一个结构体
typedef struct Node
{
int data;
struct Node * pNext;
}NODE,*PNODE;
//函数前置声明
PNODE create_list(void); //创建一个链表
void traverse_list(PNODE); //遍历整个链表
bool is_empty(PNODE); //判断列表是否为空
int length_list(PNODE); //返回链表的长度
bool insert_list(PNODE, int , int); //在链表中插入元素
bool delete_list(PNODE, int, int *);//删除链表中的某个元素,并且返回被删除的元素的值。
void sort_list(PNODE); //对链表进行排序
int main(void)
{
//初始化头指针变量
PNODE pHead = NULL;
int val;
//创建一个链表,将头结点的指针返回,保存到头指针变量中
pHead = create_list();
//判断这个链表是否为空
/*
if( is_empty(pHead) )
{
printf(这个链表为空\n);
}
else
{
printf(链表不为空\n);
}
*/
//查看元素的个数
printf(该链表元素的个数为:%d\n,length_list(pHead));
//遍历整个链表
printf(遍历整个链表:);
traverse_list(pHead);
//插入元素
printf(在第3个元素前插入一个99的值:);
insert_list(pHead, 3, 99);
traverse_list(pHead);
//对链表进行排序
printf(对链表进行升序排序:);
sort_list(pHead);
traverse_list(pHead);
//删除链表中的元素
printf(删除第三个位置的值: );
delete_list(pHead, 3, val);
//遍历这个链表
traverse_list(pHead);
return 0;
}
/*
常见一个链表
@param void
@return pHead 头指针
*/
PNODE create_list(void)
{
int val; //用于保存用户输入的值
int i; //for循环自增变量
int data;
//创建头结点
PNODE pHead = (PNODE)malloc(sizeof(NODE));
if(NULL == pHead)
{
printf(动态内存创建失败\n);
exit(-1);
}
PNODE pTail = pHead;
pTail - pNext = NULL;
printf(需要创建元素的个数len=);
scanf(%d,val);
for(i = 0; i val; ++i)
{
printf(请输入第%d个元素:, i + 1);
scanf(%d,data);
//创建这个节点
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(NULL == pNew)
{
printf(动态内存创建失败\n);
exit(-1);
}
pNew - data = data;
pNew - pNext = NULL;
pTail -
显示全部