资源简介
c语言实现的单链表和循环链表,没有用到任何的库,直接内存分配创建链表节点和删除链表节点
代码片段和文件信息
#include
#include
#include
using namespace std;
#define MAXSIZE 41
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
using Statue = int;
using ElemType = int;
using pos = int;
struct Node
{
ElemType data;
Node *next;
};
using CircleLL = struct Node* ;
//typedef struct Node *CircleLL;
Statue InitList(CircleLL *L)
{
*L = new struct Node;
if(*L==nullptr)
{
return ERROR;
}
(*L)->next=*L;
return OK;
}
Statue ListInsert(CircleLL *Lpos i ElemType e)
{
CircleLL p q;
int j;
p=*L;
j=1;
while(p->next!=*L && j {
p = p->next;
++j;
}
if (p->next==*L || j>i)
{
return ERROR;
}
q = new struct Node;
q->data = e;
q->next = p->next;
p->next = q;
return OK;
}
Statue Listdelete(CircleLL *Lpos i ElemType *e)
{
CircleLL p q;
int j;
p = *L;
j = 1;
while (p->next!=*L && j {
p = p->next;
++j;
}
if (p->next==*L || j>i)
{
return ERROR;
}
q = p->next;
*e = q->data;
p->next = q->next;
delete q;
return OK;
}
Statue searchList(CircleLL *Lpos &iElemType e)
{
CircleLL p=(*L)->next;
i=1;
while (p->data != e && p != *L)
{
p = p->next;
++i;
}
if (p==*L)
{
i=-1;
return ERROR;
}
else
{
return OK;
}
}
void creatListHead(CircleLL *Lint n=MAXSIZE)
{
CircleLL p ;
int i;
for (i = 0; i < n;++i)
{
p = new struct Node;
p->data = i+1;
p->next = (*L)->next;
(*L)->next = p;
}
}
void creatListTril(CircleLL *Lint n = MAXSIZE)
{
CircleLL pq;
int i ;
q=*L;
for(i=0;i {
p=new struct Node;
p->data = i+1 ;
q->next = p;
p->next = *L;
q=p;
}
}
void printL(CircleLL *L)
{
CircleLL p = (*L)->next;
while (p!=*L)
{
cout << p->data << “ “;
p=p->next;
}
cout << endl;
}
int main()
{
CircleLL L;
InitList(&L);
creatListTril(&L);
// printL(&L);
// ListInsert(&L10100);
// printL(&L);
// int i;
// Listdelete(&L10&i);
// cout<<“删除的元素是:“<// printL(&L);
// cout<<“请输入要查找的元素: “;
// cin>>i;
// pos j;
// searchList(&Lji);
// cout<<“该元素所在位置是: “< CircleLL p = Lq;
pos j;
while (p)
{
p = p->next;
if (p->next==L)
{
p->next = L->next;
break;
}
}
p = L->next;
while (p->next!=p)
{
p = p->next;
q = p->next;
j = q->data;
p->next = q->next;
p = q->next;
cout << j << “->“;
}
cout << p->data< system(“pause“);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2609 2018-01-24 11:19 CirLL.cpp
文件 117 2017-12-25 02:36 main.cpp
文件 2835 2018-01-23 16:59 li
- 上一篇:c++内置函数
- 下一篇:c++递归实现数组遍历和阶乘函数
相关资源
- 数据结构 通讯录管理 课程设计C++单链
- 数据结构c语言版-单链表的操作程序代
- 若干城市的信息存入一个带头结点的
- c++实现的单链表
- C/C++经典约瑟夫环问题——带头结点的
- 单链表的并集与交集C语言
- 单链表的C++实现。。
- c语言 利用学生信息栈实现学生信息单
- 数据结构单链表c语言源代码
- 数据结构头插法建立单链表
- 单链表的类模板定义与实现
- 数据结构单链表实现大数阶乘C++递归
- 设A和B是两个单链表,其表中元素递增
- 数据结构单链表的表示和基本操作学
- 数据结构C++单链表详细操作实现(输
- C语言单链表实现19个功能完全详解.
- 单链表实现学生成绩管理系统C语言
- 数据结构实习1.4 双向循环链表实现长
- 用C++写的双向循环链表派生栈和队列
- c语言做的成绩管理系统(单链表实现
评论
共有 条评论