程序要求

1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。
2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68。
3.建立一个带头结点的单链表,结点的值域为整型数据。要求将用户输入的数据按尾插入法来建立相应单链表。
输入和输出的格式

1.顺序线性表的建立、插入及删除

顺序表

#include<stdio.h>
#include<stdlib.h> #define ListSize 50
typedef int DataType; //线性表的顺序存储方式
typedef struct {
DataType data[ListSize];
int l;
}SeqList; //创建顺序线性表
void CreateList(SeqList *A,int n)
{
int i;
for(i=;i<n;i++)
{
scanf("%d",&(A->data[i]));
}
A->l=n;
} //在顺序线性表中插入某个元素
void InsertList(SeqList *A,DataType x,int i)
{
int j;
if(i< || i>A->l) //插入时的条件
{
printf("插入位置错误!\n");
exit();
}
else
{
printf("插入成功!\n");
}
if(A->l >= ListSize)
{
printf("列表溢出!\n");
exit();
}
for(j=A->l-;j>=i-;j--)
{
A->data[j+]=A->data[j]; //插入时,把各个元素向后移动后,然后在进行插入
}
A->data[i-]=x;
A->l++;
} //在顺序线性表中删除某个元素
void DeleteList(SeqList *A,int i)
{
int j;
if(A->l==) //删除时的条件
{
printf("列表为空!\n");
exit();
}
if(i< || i>A->l)
{
printf("删除位置错误!\n\n");
exit();
}
for(j=i;j<=A->l-;j++) //删除时,把各个元素向前移动,覆盖掉要删除的元素
{
A->data[j-]=A->data[j];
}
A->l--;
} //输出线性表
void DisList(SeqList *L)
{
int i;
for(i=;i<L->l;i++)
printf("%d ",L->data[i]);
printf("\n");
} void main()
{
SeqList *A=(SeqList*)malloc(sizeof(SeqList));
int a=;
printf("请输入7个整型元素:\n");
CreateList(A,a);
printf("输出SeqList的长度: \n");
printf("长度=%d\n",A->l);
printf("表内元素为");
DisList(A);
DataType x;
printf("请输入需要插入的元素的位置!\n");
int i;
scanf("%d",&i);
printf("请输入需要插入的元素!\n");
scanf("%d",&x);
InsertList(A,x,i);
printf("长度=%d\n",A->l);
printf("表内元素为");
DisList(A);
printf("请输入需要删除的元素的位置!\n");
scanf("%d",&i);
DeleteList(A,i);
printf("表内元素为");
DisList(A);
printf("长度=%d\n",A->l);
}

输入和输出的格式
顺序表输入输出:定义输入7个整型元素,回车进行插入和删除,输出线性表

2.链式线性表的建立、插入及删除

单链表

#include <stdio.h>
#include <stdlib.h> typedef int ElemType; //定义结点类型
typedef struct Node
{
ElemType data; //单链表中的数据域
struct Node *next; //单链表的指针域
}Node,*LinkedList; //单链表的初始化
LinkedList LinkedListInit()
{
Node *A;
A = (Node *)malloc(sizeof(Node)); //申请结点空间
if(A == NULL) //判断是否有足够的内存空间
printf("申请内存空间失败\n");
A->next = NULL; //将next设置为NULL,初始长度为0的单链表
return A;
} //单链表的建立
LinkedList LinkedListCreat()
{
Node *A;
A = (Node *)malloc(sizeof(Node)); //申请头结点空间
A->next = NULL; //初始化一个空链表
Node *r;
r = A;
ElemType x;
while(scanf("%d",&x) != EOF)
{
Node *p;
p = (Node *)malloc(sizeof(Node));
p->data = x;
r->next = p;
r = p;
}
r->next = NULL;
return A;
} //单链表的插入,在链表的第i个位置插入x的元素
LinkedList LinkedListInsert(LinkedList A,int i,ElemType x)
{
Node *pre; //pre为前驱结点
pre = A;
int tempi = ;
for (tempi = ; tempi < i; tempi++)
pre = pre->next; //查找第i个位置的前驱结点
Node *p; //插入的结点为p
p = (Node *)malloc(sizeof(Node));
p->data = x;
p->next = pre->next;
pre->next = p;
return A;
} //单链表的删除,在链表中删除数据值为x的元素
LinkedList LinkedListDelete(LinkedList A,ElemType x)
{
Node *p,*pre; //pre为前驱结点,p为查找的结点。
p = A->next;
while(p->data != x) //查找值为x的元素
{
pre = p;
p = p->next;
}
pre->next = p->next; //删除操作,将其前驱next指向其后继。
free(p);
return A;
} int main()
{
LinkedList list,start;
printf("请输入需要添加单链表的数据:");
list = LinkedListCreat();
for(start = list->next; start != NULL; start = start->next)
printf("%d ",start->data);
printf("\n"); int i;
ElemType x;
printf("请输入需要插入数据的位置:");
scanf("%d",&i);
printf("请输入需要插入数据的值:");
scanf("%d",&x);
LinkedListInsert(list,i,x);
for(start = list->next; start != NULL; start = start->next)
printf("%d ",start->data);
printf("\n");
printf("请输入需要删除的数据的值:");
scanf("%d",&x);
LinkedListDelete(list,x);
for(start = list->next; start != NULL; start = start->next)
printf("%d ",start->data);
printf("\n");
return ;
}

输入和输出的格式
单链表输入输出:本程序可以输入多个整型数据元素
请输入第一个整数,回车输入下一个数
请输入第二个整数......最后输入Ctrl+z结束输入,进行插入和删除,最后输出单链表

C语言——线性表及其应用的更多相关文章

  1. C语言 线性表 双向链式结构 实现

    一个双向链式结构实现的线性表 duList (GCC编译). /** * @brief 线性表双向链表结构 * @author wid * @date 2013-10-28 * * @note 若代码 ...

  2. C语言 线性表 链式表结构 实现

    一个单链式实现的线性表 mList (GCC编译). /** * @brief 线性表的链式实现 (单链表) * @author wid * @date 2013-10-21 * * @note 若代 ...

  3. C语言 线性表 顺序表结构 实现

    一个能够自动扩容的顺序表 ArrList (GCC编译). #include <stdio.h> #include <stdlib.h> #include <string ...

  4. c语言线性表

    #include<stdio.h> #include<time.h> #include<stdlib.h> #define MAXSIZE 20 //初始长度 ty ...

  5. C语言--线性表

    #include<stdio.h>#include<stdlib.h>#include<string.h>#define LIST_SIZE 100#define ...

  6. 数据结构算法C语言实现(二)---2.3线性表的链式表示和实现之单链表

    一.简述 [暂无] 二.头文件 #ifndef _2_3_part1_H_ #define _2_3_part1_H_ //2_3_part1.h /** author:zhaoyu email:zh ...

  7. 数据结构算法C语言实现(一)---2.2线性表的顺序表示和实现

    注意: 虽然是用C语言实现,但是考虑到使用了一个C++的特性----引用以简化代码,所以所有的代码均以cpp作为后缀,用g++编译(以后不做说明). g++版本: 一.简述 本节主要讲述线性表的顺序实 ...

  8. 线性表之顺序存储结构(C语言动态数组实现)

    线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...

  9. 数据结构-线性表的链式存储相关算法(C语言实现)

    链表的简单介绍 为什么需要线性链表 当然是为了克服顺序表的缺点,在顺序表中,做插入和删除操作时,需要大量的移动元素,导致效率下降. 线性链表的分类 按照链接方式: 按照实现角度: 线性链表的创建和简单 ...

随机推荐

  1. 一统江湖的大前端(8)- velocity.js 运动的姿势(上)

    [摘要] 介绍CSS动画和JS动画的基本特点,以及轻量级动画库velocity.js的基本用法. 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园 ...

  2. 一条数据的HBase之旅,简明HBase入门教程1:开篇

    [摘要] 这是HBase入门系列的第1篇文章,主要介绍HBase当前的项目活跃度以及搜索引擎热度信息,以及一些概况信息,内容基于HBase 2.0 beta2版本.本系列文章既适用于HBase新手,也 ...

  3. 输入URL到页面渲染

    输入网址回车或者刷新页面到页面传染出来的整个流程 DNS 解析 HTTP三次握手 -> TCP/IP连接 浏览器发送请求 服务器返回请求的文件 (html) 浏览器渲染 1. DNS 解析 查找 ...

  4. 洛谷 题解 P1842 【奶牛玩杂技】

    本蒟蒻又双叒叕被爆踩辣! Solution: 我们先看数据,50000,那么O(n)或者O(n log(n))是可以过的,非严格O(n * sqrt(n))要卡卡常,说不定也可以过. 那么什么算法可以 ...

  5. SpringMVC Mock测试

    什么是mock测试? 在测试过程中,对于某些不容易构成或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法,就是Mock测试. Servlet.Request.Response等Servle ...

  6. HDU-6113

    度度熊是一个喜欢计算机的孩子,在计算机的世界中,所有事物实际上都只由0和1组成. 现在给你一个n*m的图像,你需要分辨他究竟是0,还是1,或者两者均不是. 图像0的定义:存在1字符且1字符只能是由一个 ...

  7. Redis KeyExpire的使用

    Set a timeout on key. After the timeout has expired, the key will automatically be deleted. A key wi ...

  8. 使用ExcelPackage进行Excel报表

    Nuget包名为 epplus.core 命名空间OfficeOpenXml string localFileName = path + Path.DirectorySeparatorChar + f ...

  9. art-template循环无法显示出数据

    art-template循环遍历无法显示数据原因 1.语法问题:循环语句导致的问题 2.插件问题: 用标准语法时循环数据如果引入第一个插件,会导致数据显示不出来只有引入第二个插件才可循环出数据 用原生 ...

  10. 【React】383- React Fiber:深入理解 React reconciliation 算法

    作者:Maxim Koretskyi 译文:Leiy https://indepth.dev/inside-fiber-in-depth-overview-of-the-new-reconciliat ...