创建非循环链表
来源:互联网 发布:蓝月传奇官职升级数据 编辑:程序博客网 时间:2024/05/16 14:38
/*
2017年6月16日 09:13:09
2017年6月16日 09:13:09
数据结构(c)
创建非循环链表
(disunderstand 2)
*/
(disunderstand 2)
*/
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct Node
{
int data;
struct Node * pNext;
}NODE, *PNODE;
{
int data;
struct Node * pNext;
}NODE, *PNODE;
//函数声明
PNODE create_list(int len);//创建非循环链表
void traverse_list(PNODE pHead);//便历链表
bool find_list (PNODE pHead, int val, int loc);//在链表中第loc的地方查找是否有val这个值
bool insert_list (PNODE pHead, int val, int loc);//在链表中第loc的地方插入val这个值
bool is_empty(PNODE pHead);//判断链表是否为空
bool delete_list (PNODE pHead, int loc, int * val);//删除链表指定位置的值
void sort_list (PNODE pHead);//排序
int lenth_list (PNODE pHead);//求长度
//主函数
int main (void)
{
int val;
PNODE pHead = NULL;
pHead = create_list(5);
printf("\n便历链表\n");
traverse_list(pHead);
printf("\n查找链表中某个值\n");
if (find_list (pHead, 5, 3))
printf ("链表中有这个值\n");
else
printf ("链表中没有这个值\n");
void traverse_list(PNODE pHead);//便历链表
bool find_list (PNODE pHead, int val, int loc);//在链表中第loc的地方查找是否有val这个值
bool insert_list (PNODE pHead, int val, int loc);//在链表中第loc的地方插入val这个值
bool is_empty(PNODE pHead);//判断链表是否为空
bool delete_list (PNODE pHead, int loc, int * val);//删除链表指定位置的值
void sort_list (PNODE pHead);//排序
int lenth_list (PNODE pHead);//求长度
//主函数
int main (void)
{
int val;
PNODE pHead = NULL;
pHead = create_list(5);
printf("\n便历链表\n");
traverse_list(pHead);
printf("\n查找链表中某个值\n");
if (find_list (pHead, 5, 3))
printf ("链表中有这个值\n");
else
printf ("链表中没有这个值\n");
printf("\n删除链表中某个位置值\n");
delete_list (pHead, 3, &val);
delete_list (pHead, 3, &val);
printf("\n便历链表\n");
traverse_list(pHead);
//长度
int len = lenth_list (pHead);
printf ("\n长度:%d\n", len);
//排序
sort_list (pHead);
printf("\n排序\n");
traverse_list(pHead);
//插入
insert_list (pHead, 44, 3);
printf("\n插入\n");
traverse_list(pHead);
traverse_list(pHead);
//长度
int len = lenth_list (pHead);
printf ("\n长度:%d\n", len);
//排序
sort_list (pHead);
printf("\n排序\n");
traverse_list(pHead);
//插入
insert_list (pHead, 44, 3);
printf("\n插入\n");
traverse_list(pHead);
return 0;
}
//创建非循环链表
PNODE create_list(int len)
{
int i;
int val;
PNODE create_list(int len)
{
int i;
int val;
PNODE pHead = (PNODE) malloc (sizeof(NODE));
if (NULL == pHead)
{
printf ("内存分配失败\n");
exit (-1);
}
PNODE pTail = pHead;
pHead->pNext = NULL;
if (NULL == pHead)
{
printf ("内存分配失败\n");
exit (-1);
}
PNODE pTail = pHead;
pHead->pNext = NULL;
for (i = 0; i < len; ++i)
{
printf ("请输入第%d个节点的值: ", i + 1);
scanf ("%d", &val);
PNODE pNew = (PNODE) malloc (sizeof (NODE));
if (NULL == pNew)
{
printf ("内存分配失败\n");
exit (-1);
}
pNew ->data = val;
pTail -> pNext = pNew;
pNew -> pNext = NULL;
pTail = pNew;
{
printf ("请输入第%d个节点的值: ", i + 1);
scanf ("%d", &val);
PNODE pNew = (PNODE) malloc (sizeof (NODE));
if (NULL == pNew)
{
printf ("内存分配失败\n");
exit (-1);
}
pNew ->data = val;
pTail -> pNext = pNew;
pNew -> pNext = NULL;
pTail = pNew;
}
return pHead;
}
//便历链表
void traverse_list(PNODE pHead)
{
if (NULL == pHead ->pNext )
printf ("链表为空");
pHead = pHead->pNext ;
void traverse_list(PNODE pHead)
{
if (NULL == pHead ->pNext )
printf ("链表为空");
pHead = pHead->pNext ;
while (NULL != pHead)
{
printf (" %d ", pHead->data );
pHead = pHead->pNext ;
{
printf (" %d ", pHead->data );
pHead = pHead->pNext ;
}
printf ("\n");
printf ("\n");
return;
}
//查找链表中的某一个值
bool find_list (PNODE pHead, int val, int loc)
{
int i = 0;
int n = 1;
if (NULL == pHead ->pNext )
printf ("链表为空");
pHead = pHead->pNext ;
}
//查找链表中的某一个值
bool find_list (PNODE pHead, int val, int loc)
{
int i = 0;
int n = 1;
if (NULL == pHead ->pNext )
printf ("链表为空");
pHead = pHead->pNext ;
while (NULL != pHead)
{
if (n == loc)
{
if (val == pHead->data )
{
i = 1;
}
}
pHead = pHead->pNext ;
++n;
{
if (n == loc)
{
if (val == pHead->data )
{
i = 1;
}
}
pHead = pHead->pNext ;
++n;
}
if (1 == i)
return true;
else
return false;
if (1 == i)
return true;
else
return false;
}
//判断链表是否为空
bool is_empty(PNODE pHead)
{
if (NULL == pHead->pNext )
return true;
else
return false;
}
//删除链表指定位置的值(disunderstand 1)
bool delete_list (PNODE pHead, int loc, int * val)
{
int i = 0;
PNODE p = pHead;
while (NULL != p->pNext && i < loc - 1)
{
p = p->pNext ;
++i;
}
//判断链表是否为空
bool is_empty(PNODE pHead)
{
if (NULL == pHead->pNext )
return true;
else
return false;
}
//删除链表指定位置的值(disunderstand 1)
bool delete_list (PNODE pHead, int loc, int * val)
{
int i = 0;
PNODE p = pHead;
while (NULL != p->pNext && i < loc - 1)
{
p = p->pNext ;
++i;
}
if (i > loc - 1 || NULL == p->pNext )
return false;
PNODE q = p->pNext ;
*val = q->data ;
return false;
PNODE q = p->pNext ;
*val = q->data ;
p->pNext = p->pNext ->pNext ;
free(q);
q = NULL;
return true;
free(q);
q = NULL;
return true;
}
//排序
void sort_list (PNODE pHead)
{
PNODE m, n;
int t, i, j;
int len = lenth_list (pHead);
void sort_list (PNODE pHead)
{
PNODE m, n;
int t, i, j;
int len = lenth_list (pHead);
for (i = 0, m = pHead->pNext ; i < len - 1; i++, m = m ->pNext )
{
for(j = i + 1, n = m ->pNext ; j < len; j++, n = n ->pNext )
{
if (m->data > n->data )
{
t = m->data;
m->data = n->data;
n->data = t;
}
{
for(j = i + 1, n = m ->pNext ; j < len; j++, n = n ->pNext )
{
if (m->data > n->data )
{
t = m->data;
m->data = n->data;
n->data = t;
}
}
}
}
return;
}
//链表长度
int lenth_list (PNODE pHead)
{
int i = 0;
PNODE s = pHead->pNext ;
while (NULL != s)
{
i++;
s = s->pNext ;
}
//链表长度
int lenth_list (PNODE pHead)
{
int i = 0;
PNODE s = pHead->pNext ;
while (NULL != s)
{
i++;
s = s->pNext ;
}
return i;
}
return i;
}
//在链表中第loc的地方插入val这个值(disunderstand 2)
bool insert_list (PNODE pHead, int val, int loc)
{
int i = 0;
PNODE p = pHead;
bool insert_list (PNODE pHead, int val, int loc)
{
int i = 0;
PNODE p = pHead;
while (NULL != p && i < loc - 1)
{
p = p->pNext ;
++i;
}
if (i > loc -1 || NULL == p)
return false;
{
p = p->pNext ;
++i;
}
if (i > loc -1 || NULL == p)
return false;
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if (NULL == pNew)
{
printf("分配失败\n");
exit(-1);
}
int n = 0;
pNew->data = val;
PNODE q = p->pNext ;
p->pNext = pNew;
pNew->pNext = q;
PNODE q = p->pNext ;
p->pNext = pNew;
pNew->pNext = q;
return true;
}
阅读全文
0 0
- 创建非循环链表
- 创建非循环链表
- 循环链表创建
- 连续存储---非循环链表的创建与遍历输出
- 双向链表(非循环)
- 数据结构--双向非循环链表
- 双向链表(非循环)排序
- 双向链表(非循环)
- 循环链表的创建
- 循环链表的创建
- 循环链表的创建和读取
- 循环链表的创建及遍历
- 怎样循环的创建链表
- 循环链表的创建及遍历
- 循环链表的创建与输出
- 非循环单链表的创建和遍历输出
- 非循环单向链表-增删改查排-释放
- C语言使用非循环双向链表实现队列
- linux在命令行直接打开图形文件夹
- 开启win7家庭普通版的超级管理员账户Administroto
- 【代码笔记】iOS-UIActionSheet动态添加按钮
- MySQL Group Commit 组提交(BLGC)
- 【Java】XML文件读取到数据库
- 创建非循环链表
- 比特币系统的脚本(Script)——交易生成和验证的原理(第一部分)(初稿)*****
- 串口与SPI
- 页高速缓存
- Python基础概念_8_字符串处理
- ubuntu学习日记--Lesson5:系统目录详解
- 日语语法(二):名词
- VS2012安装部署教程
- Java实践(零)---ASCII码表