数据结构 线性表 循环链表 插入与删除

原创 2013年12月02日 18:58:48
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>

#define OK          1
#define ERROR       0
#define OVERFLOW    -2

typedef int ElemType;

typedef struct LNode
{
	ElemType data;
	struct LNode *next;
}LNode, *LinkList;

void CreateList_L(LinkList &L, int n)
{
	int i;
	LinkList p,q;
	L = (LinkList) malloc (sizeof(LNode));
	if (!L)
	{
		exit(OVERFLOW);
	}
	q = L;
	q->next = L;
	for (i=n; i>0; --i)
	{
		p = (LinkList) malloc (sizeof (LNode));
		if (!p)
		{
			exit(OVERFLOW);
		}
		scanf("%d",&p->data);
		p->next = L;
		q->next = p;
		q = p;
	}
}


void Display(LinkList L)
{
	LinkList p = L->next;
	while (p != L)
	{
		printf("%d ",p->data);
		p = p->next;
	}
	printf("\n");
}

int ListInsert_L(LinkList &L, int i, ElemType e)
{
	LinkList s,p = L;
	int j = 0;
	while (p->next != L  && j<i-1)
	{
		p = p->next;
		++j;
	}
	if ( (p->next == L) || j>i-1)
	{
		return ERROR;
	}
	s = (LinkList) malloc (sizeof(LNode));
	s->data = e;
	s->next = p->next;
	p->next = s;
	return OK;
}


int ListDelete_L(LinkList &L, int i, ElemType &e)
{
	LinkList p = L,q;
	int j = 0;
	while (p->next != L && j<i-1)
	{
		p = p->next;
		++j;
	}
	if ((p->next == L) || j>i-1)
	{
		return ERROR;
	}
	q = p->next;
	p->next = q->next ;
	e = q->data ;
	free(q);
	return OK;
}




int main()
{
	int i,e,n;
	LinkList L;
	printf("请输入您要创建循环链表的元素的个数:");
	scanf("%d",&n);
	CreateList_L(L,n);
	printf("请输入您要插入元素的位置:");
	scanf("%d",&i);
	printf("请输入您要插入的元素:");
	scanf("%d",&e);
	ListInsert_L(L,i,e);
	printf("插入元素后的单链表是:");
	Display(L);
	printf("请输入您要删除的元素的位置:");
	scanf("%d",&i);
	ListDelete_L(L,i,e);
	printf("该位置上的元素是: %d\n",e);
	printf("删除元素 %d 后的单链表是:",e);
	Display(L);
	return 0;
}

数据结构_线性表_链式存储_单向循环链表的基本操作

1.概述: 对于一个循环链表来说,其首节点和末节点被连接在一起。这种方式在单向和双向链表中皆可实现。要转换一个循环链表,可以选择开始于任意一个节点然后沿着列表的任一方向直到返回开始的节点。再来看另一...
  • lcg910978041
  • lcg910978041
  • 2016年05月06日 16:37
  • 1100

数据结构 线性表的插入和删除运算

#include using namespace std; const int MAXSIZE=100; typedef struct {     int s[MAXSIZE];     ...
  • u013077167
  • u013077167
  • 2013年12月08日 16:13
  • 1098

【数据结构】顺序表、单链表、循环链表的插入与删除

写在前面的 顺序表 插入 删除 定位 单链表 插入 删除 双向循环链表 删除 插入 总结写在前面的       在复习数据结构的过程中对于链表的操作总是容易忘记,时不时的就不知道具体的该怎么操作了,所...
  • SugaryoTT
  • SugaryoTT
  • 2016年09月19日 23:05
  • 1276

链式线性表的插入与删除

描述 删除链式线性表指定位置的元素。 输入 第一行为自然数n,表示链式线性表的长度,第二行为n个自然数表示链式线性表各元素值。第三行为指定删除的位置,第四行为插入的位置及元素值(...
  • a997930294
  • a997930294
  • 2013年08月05日 20:16
  • 999

Java数据结构线性表中插入、删除、查询、成串、查找等操作

主要是关于一些对线性表的操作,包括插入、删除、查询、成串、查找等操作,下面是程序代码: SeqLis.java public class SeqList implements LList {    ...
  • ioiuuiouio
  • ioiuuiouio
  • 2015年10月13日 16:59
  • 1560

C语言实现线性表的插入和删除操作

设计程序建立一个顺序表,要求从键盘输入整数,并完成添加插入和删除元素功能,并将该顺序表的元素从屏幕显示出来。 使用malloc和realloc函数动态分配内存地址。...
  • lgj123xj
  • lgj123xj
  • 2017年04月25日 17:13
  • 3304

数据结构_线性表_顺序表 的创建,插入,删除,查找

首先要了解顺序结构,顺序机构就是将表中元素一个接一个的存入一组连续的存储单元中,这种存储结构是顺序结构。 其次要了解线性表的线性 线性表是最基本、最简单、也是最常用的一种数据结构。 线性表中数据...
  • lcg910978041
  • lcg910978041
  • 2016年05月04日 21:13
  • 1824

线性表插入和删除——程序实例

顺序实现 .h文件 此文件为方法 #ifndef SQLIST_H_INCLUDED #define SQLIST_H_INCLUDED #include "ds.h" ...
  • Cowena
  • Cowena
  • 2015年08月07日 08:58
  • 2934

数据结构线性表之顺序表的基本操作插入、删除、遍历、初始化

线性表(List)是最常见的也是最简单的一种数据结构。线性表的抽象数据类型,线性表的顺序存储结构——顺序表,顺序表的基本操作插入、删除、遍历等。...
  • xiao_K_ruo_feng
  • xiao_K_ruo_feng
  • 2017年04月16日 10:15
  • 1181

C/C++学习(六)线性表的插入、删除和查找

查找 查找线性表是最基本的操作之一,比如根据序号查找元素的值,或者根据值查找该值是否在线性表中,如果在,那么序号是几等等。   插入 如果插入的位置不合理,那么就抛出异常。如果线性表长度大...
  • qq_15145665
  • qq_15145665
  • 2015年12月14日 21:17
  • 1554
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构 线性表 循环链表 插入与删除
举报原因:
原因补充:

(最多只允许输入30个字)