云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 链表的增删改查

链表的增删改查

  • 62 次阅读
  • 3 次下载
  • 2026/4/23 0:24:00

# include # include # include

typedef struct Node {

PNODE create_list(void);//创建链表

void traverse_list(PNODE pHead);//遍历链表 bool is_empty(PNODE);//判断链表是否存在 int length_list(PNODE);//判断链表长度

bool insert_list(PNODE, int , int);//在pHead所指向链表的第pos个节点的前面插入一个新的结点,该节点的值是val,并且pos的值从1开始 bool delete_list(PNODE, int, int *);//删除数据 void sort_list(PNODE);//将链表排序 int main() {

pHead = create_list();//creaet_list()创建一个单循环链表,并将链表的头结点的地址付给pHead traverse_list(pHead); int len = length_list(pHead); printf(\链表长度是%d\\n\sort_list(pHead); traverse_list(pHead);

//insert_list(pHead, 2, 9);//增加数据 if(delete_list(pHead, 4, &val)) { } else { }

traverse_list(pHead);

printf(\删除失败!你删除的元素不存在\printf(\删除成功,你删除的元素是:%d\\n\

PNODE pHead = NULL;//等价于 struct Node * pHdad = NULL; int val;

int data;//数据域

struct Node * pNext;//指针域

}NODE, * PNODE;//NODE等价于struct Node PNODE等价于struct Node *

}

PNODE create_list(void) {

PNODE pNew = (PNODE)malloc(sizeof(NODE)); if(NULL==pHead) {

printf(\分配失败,程序终止\\n\exit(-1); }

printf(\请输入您需要生成的链表节点的个数:len = \scanf(\for(i=0; i

printf(\请输入第%d个节点的值\ i+1); scanf(\PNODE pTail = pHead; pTail->pNext = NULL; int len; int i; int val;

PNODE pHead = (PNODE)malloc(sizeof(NODE)); if(NULL==pHead) { }

printf(\分配失败,程序终止\\n\exit(-1); /*

if(is_empty(pHead)) else */

printf(\链表不为空!\\n\printf(\链表为空!\\n\

}

}

pNew->data = val; pTail->pNext = pNew; pNew->pNext = NULL; pTail = pNew;

return pHead;

void traverse_list(PNODE pHead) { }

bool is_empty(PNODE pHead) { }

int length_list(PNODE pHead) {

PNODE p = pHead->pNext; int len = 0; while (NULL != p) { }

return len;

++len; p = p->pNext;

if(NULL == pHead->pNext) else

return false; return true;

PNODE p = pHead->pNext; while (NULL != p) { }

printf(\return;

printf(\ \p = p->pNext;

}

void sort_list(PNODE pHead) { }

//在pHead所指向链表的第pos个节点的前面插入一个新的结点,该节点的值是val,并且pos的值从1开始

bool insert_list(PNODE pHead, int pos, int val) {

PNODE pNew = (PNODE)malloc(sizeof(NODE)); if(NULL ==pNew) if(i>pos-1 || NULL==p)

return false;

while (NULL != p && i

p = p->pNext; ++i; int i = 0;

PNODE p = pHead; int i, j, t;

int len = length_list(pHead); PNODE p, q;

for (i=0, p=pHead->pNext; ipNext) { }

for (j=i+1, q=p->pNext; jpNext) { }

if(p->data > q->data) { }

t = p->data;//类似于数组中德: t = a[i];

p->data = q->data;//类似于数组中德: a[i] = a[j]; q->data = t;//类似于数组中德: a[j]= t;

}

{ }

pNew->data = val; PNODE q = p->pNext; p->pNext = pNew; pNew->pNext = q; return true;

printf(\动态分配内存失败!\\n\exit(-1);

bool delete_list(PNODE pHead, int pos, int * pVal) { }

//删除p节点后面的节点; p->pNext = p->pNext->pNext; free(q); q = NULL;

return true;

if(i>pos-1 || NULL==p)

return false; PNODE q = p->pNext; *pVal = q->data;

while (NULL != p && i

p = p->pNext; ++i;

int i = 0; PNODE p = pHead;

搜索更多关于: 链表的增删改查 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

# include # include # include typedef struct Node { PNODE create_list(void);//创建链表 void traverse_list(PNODE pHead);//遍历链表 bool is_empty(PNODE);//判断链表是否存在 int length_list(PNODE);//判断链表长度 bool insert_list(PNODE, int , int);//在pHead所指向链表的第pos个节点的前面插入一个新的结点,该节点的值是val,并且pos的值从1开始 bool delete_list(PNODE, int, int *);//删除数据 void sort_list

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com