-
2012-07-28 12:55:27
建立一个线性表,依次从键盘输入的正整数(输入一个非正整数为结束),然后依次输出:
#include<iostream> using namespace std; struct node { int d; node *next; }; int main() { node *head,*p,*q; int x; head=0; q=NULL; cin>>x; while(x>0) { p=new node; p->d=x; p->next=NULL; if(head==NULL) head=p; else q->next=p; q=p; cin>>x; } p=head; while(p!=NULL) { cout<<p->d<<endl; q=p; p=p->next; delete q; } return 0; }
实验结果1 2 3 1 2 0 1 2 3 1 2 Press any key to continue
更多相关内容 -
员工按照顺序存储结构建立一个线性表
2012-03-08 22:40:30某软件公司大约有30名员工,每名员工有姓名、工号、职务等属性,每年都有员工离职和...把所有员工按照顺序存储结构建立一个线性表,建立离职和入职函数,当有员工离职或入职时,修改线性表,并且打印最新的员工名单。 -
C++怎样建立一个线性表?
2021-05-25 00:47:15} /***********计算线性表的长度*******************/ int SLLenght(SLType *SL) { return(SL->ListLen);//返回顺序表的元素数量 } /*********插入结点*******************************/ int SLInsert(SLType *...满意答案
_婊嬩簨甯漘
2019.10.25
采纳率:41% 等级:8
已帮助:364人
#include
#include
using namespace std;
#define MAXLEN 100//定义顺序表的最大长度
/**************顺序表的定义部分*****************/
struct DATA
{
string key;//结点的关键字
string name;
int age;
};
structSLType//定义顺序表结构
{
DATA ListData[MAXLEN+1];//保存顺序表的结构数组
int ListLen;//顺序表已存结点的数量
};
/************顺序表的初始化函数*****************/
void SLInit(SLType * SL)//初始化顺序表
{
SL->ListLen=0;
}
/***********计算线性表的长度*******************/
int SLLenght(SLType *SL)
{
return(SL->ListLen);//返回顺序表的元素数量
}
/*********插入结点*******************************/
int SLInsert(SLType *SL,int n,DATA data)
{
int i;
if(SL->ListLen>=MAXLEN)//顺序表结点数量已超过最大数量
{
cout<
return 0;//返回0表示插入不成功
}
if(n<1||n>SL->ListLen)//插入结点的序号不合法
{
cout<
return 0;
}
for(i=SL->ListLen;i>=n;i--)//将顺序表中的数据向后移动
{
SL->ListData[i+1]=SL->ListData[i];
}
SL->ListData[n]=data;
SL->ListLen++;
return 1; //成功插入,返回1
}
/***********************追加结点*************************/
int SLAdd(SLType * SL,DATA data)
{
if(SL->ListLen>=MAXLEN)
{
cout<
return 0;
}
SL->ListData[++SL->ListLen]=data;
return 1;
}
/***********************删除结点*************************/
int SLDelete(SLType *SL,int n)//删除顺序表中的数据元素
{
int i;
if(n<1||n>SL->ListLen)//删除结点的序号不合法
{
cout<
return 0;
}
for(i=n;iListLen;i++)//将顺序表中的数据向前移动
{
SL->ListData[i]=SL->ListData[i+1];
}
SL->ListLen--;//顺序表元素数量减1
return 1;//成功删除返回1
}
/*******************按照序号查找结点********************/
DATA * SLFindByNum(SLType *SL,int n)//根据序号返回数据元素
{
if(n<1||n>SL->ListLen)//查询结点的序号不合法
{
cout<
return 0;
}
return &(SL->ListData[n]);
}
/*******************按照关键字查找结点********************/
DATA *SLFindByCont(SLType * SL,string name)//按关键字查询结点
{
int i;
for(i=1;i<=SL->ListLen;i++)
{
if(SL->ListData[i].name==name)//如果找到结点
{
return &(SL->ListData[i]);
}
}
return 0;//在整个表中都没有找到,返回0
}
/*******************显示所有的结点********************/
void SLALL(SLType *SL)
{
int i;
for(i=1;i<=SL->ListLen;i++)
{
cout<ListData[i].key<ListData[i].name<ListData[i].age<
}
}
int main()
{
int i;
SLType SL;//定义顺序表变量
DATA data;//定义结点保存数据类型变量
DATA *pdata;//定义指向结点的指针变量
string name;
cout<
SLInit(&SL);//初始化顺序表
do
{//循环添加结点数据
cout<
cin>>data.key>>data.name>>data.age;
if(data.age)//若年龄不为0
{
if(!SLAdd(&SL,data))//若添加结点失败
{
break;//退出循环
}
}else
{
break;
}
}while(1);
cout<
SLALL(&SL);//显示所有的结点
cout<
cin>>i;
pdata=SLFindByNum(&SL,i);//按序号查找结点
if(pdata)
{
cout<key<name<age<
}
cout<
cin>>name;
pdata=SLFindByCont(&SL,name);
if(pdata)
{
cout<key<name<age<
}
cout<
cin>>i;
if(SLDelete(&SL,i))
{
cout<
SLALL(&SL);
}
cout<
cin>>i;
cout<
cin>>data.key>>data.name>>data.age;
if(SLInsert(&SL,i,data))
{
cout<
SLALL(&SL);
}
return 0;
}
00分享举报
-
P21例2-1 编程实现如下任务:建立一个线性表,首先依次输入数据元素1,2,3,...,10,然后删除数据元素5,...
2020-10-08 11:52:37P21例2-1 编程实现如下任务:建立一个线性表,首先依次输入数据元素1,2,3,…,10,然后删除数据元素5,最后依次显示当前线性表中的数据元素。假设该线性表的数据元素个数在最坏情况下不会超过100个。要求使用顺序...P21例2-1 编程实现如下任务:建立一个线性表,首先依次输入数据元素1,2,3,…,10,然后删除数据元素5,最后依次显示当前线性表中的数据元素。假设该线性表的数据元素个数在最坏情况下不会超过100个。要求使用顺序表。
头文件:SeqList.h
#include<stdio.h> #define MaxSize 100 typedef int DataType; typedef struct { DataType list[MaxSize]; int size; }SeqList; void ListInitiate(SeqList *L) { L->size=0; } int ListLength(SeqList L) { return L.size; } int ListInsert(SeqList *L,int i, DataType x) { int j; if(L->size>=MaxSize) { printf("数组已满无法插入!\n"); return 0; } else if(i<0||i>L->size) { printf("参数i不合法!\n"); return 0; } else { for(j=L->size;j>i;j--) L->list[j]=L->list[j-1]; L->list[i]=x; L->size++; return 1; } } int ListDelete(SeqList *L,int i,DataType *x) { int j; if(L->size<=0) { printf("顺序表已空无数据可删!\n"); return 0; } else if(i<0||i>L->size-1) { printf("参数i不合法"); return 0; } else { *x=L->list[i]; for(j=i+1;j<=L->size-1;j++) L->list[j-1]=L->list[j]; L->size--; return 1; } } int ListGet(SeqList L,int i,DataType *x) { if(i<0||i>L.size-1) { printf("参数i不合法!\n"); return 0; } else { *x=L.list[i]; return 1; } }
源文件:SeqList.c
#include"SeqList.h" int main() { SeqList myList; int i,x; ListInitiate(&myList); for(i=0;i<10;i++) ListInsert(&myList,i,i+1); ListDelete(&myList,4,&x); for(i=0;i<ListLength(myList);i++) { ListGet(myList,i,&x); printf("%d ",x); } return 0; }
-
P32 例2-3 编程实现和例2-1相同的任务,即建立一个线性表,首先依次输入数据元素1,2,3,...,10,然后...
2020-10-08 11:56:17P32 例2-3 编程实现和例2-1相同的任务,即建立一个线性表,首先依次输入数据元素1,2,3,…,10,然后删除数据元素5,最后依次显示当前表中的数据元素。要求使用单链表。 头文件:LinList.h #include<stdio.h>...P32 例2-3 编程实现和例2-1相同的任务,即建立一个线性表,首先依次输入数据元素1,2,3,…,10,然后删除数据元素5,最后依次显示当前表中的数据元素。要求使用单链表。
头文件:LinList.h
#include<stdio.h> #include<stdlib.h> typedef int DataType; typedef struct Node { DataType data; struct Node *next; }SLNode; void ListInitiate(SLNode **head) { *head=(SLNode *)malloc(sizeof(SLNode)); (*head)->next=NULL; } int ListLength(SLNode *head) { SLNode *p=head; int size=0; while(p->next!=NULL) { p=p->next; size++; } return size; } int ListInsert(SLNode *head,int i,DataType x) { SLNode *p,*q; int j; p=head; j=-1; while(p->next!=NULL&&j<i-1) { p=p->next; j++; } if(j!=i-1) { printf("插入位置参数错!"); return 0; } q=(SLNode*)malloc(sizeof(SLNode)); q->data=x; q->next=p->next; p->next=q; return 1; } int ListDelete(SLNode *head,int i,DataType *x) { SLNode *p,*s; int j; p=head; j=-1; while(p->next!=NULL&&p->next->next!=NULL&&j<i-1) { p=p->next; j++; } if(j!=i-1) { printf("删除元素位置参数错!"); return 0; } s=p->next; *x=s->data; p->next=p->next->next; free(s); return 1; } int ListGet(SLNode *head,int i,DataType *x) { SLNode *p; int j; p=head; j=-1; while(p->next!=NULL&&j<i) { p=p->next; j++; } if(j!=i) { printf("取元素位置参数错!"); return 0; } *x=p->data; return 1; } void Destroy(SLNode **head) { SLNode *p,*p1; p=*head; while(p!=NULL) { p1=p; p=p->next; free(p1); } *head=NULL; }
源文件:LinList.c
#include"LinList.h" int main() { SLNode *head; int i,x; ListInitiate(&head); for(i=0;i<10;i++) ListInsert(head,i,i+1); ListDelete(head,4,&x); for(i=0;i<ListLength(head);i++) { ListGet(head,i,&x); printf("%d ",x); } Destroy(&head); return 0; }
-
线性表的若干操作
2019-03-26 13:07:56数据结构中的线性表的若干操作,1、建立一个顺序方式存储的线性表向表中输入若干元素后进行以下操作 1向线性表的表头、表尾或合适位置插入元素 2对线性表按升序或降序输出 2、建立一个动态链接... -
顺序表的实现及应用(含合并函数)
2020-12-02 22:52:05给定一段程序代码,程序代码所完成的功能为:(1)建立一个线性表;(2)依次输入数据元素1,2,3,4,5,6,7,8,9,10;(3)删除数据元素5;(4)依次显示当前线性表中的数据元素。假设该线性表的数据元素个数在最坏情况... -
链表的实现及应用(含选做题)
2020-12-04 23:39:16给定一段程序代码,程序代码所完成的功能为:(1)建立一个线性表;(2)依次输入数据元素1,2,3,4,5,6,7,8,9,10;(3)删除数据元素5;(4)依次显示当前线性表中的数据元素。假设该线性表的数据元素个数在最坏情况... -
把所有员工按照顺序存储结构建立一个线性表,建立离职和入职函数,当有员工离职或入职时,修改线性表,并且...
2012-08-20 11:12:27某软件公司大约有30名员工,每名员工有姓名、工号、职务等属性,每年都有员工离职和...把所有员工按照顺序存储结构建立一个线性表,建立离职和入职函数,当有员工离职或入职时,修改线性表,并且打印最新的员工名单。 -
数据结构实验报告1线性表的顺序存储结构.pdf
2019-12-19 21:02:37数据结构实验报告 1 学院 专业 班级 姓名 学号 ... 以线性表的各种操作建立插入删除等的实现为重点 目 3. 掌握线性表的动态分配顺序存储结构的定义和基本操作的实现 的 实 验 运行 Visual c++ 的微机一台 条 件 实 1. -
创建一个简单的线性表
2021-02-27 15:58:10创建一个SeqList.h头文件 #pragma once #include<iostream> using namespace std; //#include"stdlib.h" #include <assert.h> #define DEFAULT_SIZE 30 template<class ElemType> class SeqList {... -
c语言建立线性表(顺序储存,链式储存,循环,双向)全
2021-09-01 19:27:00c语言建立线性表 顺序储存 储存结构 初始化(建立)顺序表 查找操作 一、按值查找,找到返回对应的下标 二、按照下标返回元素 插入操作 一、在线性表尾部添加元素 二、在位置i处插入元素 三、顺序表(有序)插入,... -
如何用c程序建立两个线性表并把他们合并成一个线性表?
2021-05-23 11:24:02满意答案ryan_gan推荐于 2017.11.23采纳率:52%等级:12已帮助:14275人从键盘输入两个链表,通过程序对他们排序,之后按递增顺序合并链表#include "stdio.h"#include "stdlib.h"#include "malloc.h"#define NULL 0... -
数据结构-线性表
2022-02-02 16:33:13无参构造函数,创建一个空的顺序表,只需将顺序表长度初始化为0即可; 有参构造函数,即创建一个长度为n的顺序表。 2.求线性表的长度,获取成员便利length即可; 3.查找操作: 按位查找,直接根据下标获取即可,data... -
查找算法的实现(C语言版).doc
2020-04-14 15:33:37实验五 查找的实现 一 ...1建立一个线性表对表中数据元素存放的先后次序没有任何要求输入待查数据元素的关键字进行查找为了简化算法数据元素只含一个整型关键字字段数据元素的其余数据部分忽略不考虑建议采用前哨的作 -
线性表创建(最基础)
2021-03-26 21:27:34线性表:是最基本、最简单、也是最常用的一种数据结构。 前提:在学习数据结构的时候命名不要使用拼音!这是初学者的经常犯得错误。 顺序表的创建: #include<stdio.h> #define N 10 typedef int SLDataType; ... -
线性表的创建和基本操作
2021-09-14 21:58:40&&逻辑与 ||逻辑或 线性表是最基本、最简单、也是最常用的一种数据结构。 线性表结构中,数据元素之间通过一对一首位相接的方式连接起来。...为了讨论简化,我们假设每个数据元素是一个整数: . -
数据结构之线性表(顺序表、单链表、双链表)
2020-10-26 16:08:47对于同一个线性表,其每一个数据元素的值虽然不同,但必须具有相同的数据类型; 数据元素之间具有一种线性的或“一对一”的逻辑关系; 第一个数据元素没有前驱,这个数据元素被称为开始节点; 最后... -
一、线性表的顺序查找
2020-07-05 15:45:15线性表的顺序查找 1、定义查找表的顺序存储结构 2、定义创建函数(CreateSTable),实现查找表数据元素的输入 3、定义包含有监视哨的顺序查找函数(Search_Seq) 4、在主函数中调用CreateSTable函数和Search_Seq... -
数据结构实验报告1-线性表-两个有序表的归并-实验内容及要求.docx
2019-07-06 20:42:32从键盘输入数据,建立两个有序线性表(每个线性表的输入数据按由小到大次序输入来建立线性表,不必考虑排序算法);输出建好的这两个有序线性表;将这两个有序线性表归并为一个有序线性表;输出归并后的有序线性表。 ... -
线性表 (一) 线性表定义与线性表插入与删除
2020-03-02 14:22:23本文主要通俗地介绍了线性表的特征 -
数据结构之线性表的初始化及其操作
2019-04-03 23:47:22误区:刚开始我把Status理解成了C语言的一个关键字,后来才知道Status是一个用户自定义函数,是定义的一种类型。 用来表示成功或失败的状态。 typedef int Status;//Status是函数的类型 3.定义ElemType 函数类型,... -
C语言实现顺序表的基本操作(从键盘输入 生成线性表,读txt文件生成线性表和数组生成线性表----三种写法)
2020-12-15 11:26:31线性表顺序存储的概念:指的是在内存中用一段地址连续的存储单元依次存储线性表中的元素。 采用的实现方式:一段地址连续的存储单元可以用固定数组或者动态存储结构来实现,这里采用动态分配存储结构。 顺序表... -
数据结构之线性表的基本操作,用菜单实现(创建线性表,查找元素位置,按位置查找元素,插入一个元素,删除...
2020-03-16 14:18:35//定义一个链表指针 //生成菜单 char sel=' '; while(sel!='0') { printf("------线性表(链式存储结构)演示系统-------\n"); printf(" 版本:1.0 作者:xxx 日期:xxxx-xx-xx\n"); printf("-----------... -
线性表建立学生信息表
2020-01-13 17:21:56用线性表建立学生信息表 ...实验要求:定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能: (1)根据指定学生个数,逐个输入学生信息; (2)逐个显示学生表中所有学生的相关信息; (3)根据姓... -
C语言创建线性表
2019-09-20 22:30:55动态分配而非数组的线性表 在VS2019中创建的,结构体里定义了默认的构造函数...ListInit 初始化时输入一批数据 ListDelete 删除某个位置的数据 ListSearch 查找某数据在什么位置 ListOutput 输出全部数据 这是头文件... -
建立线性表
2013-10-09 00:21:04#include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; #define LIST_INIT_SIZE 100 ...typedef int ElemType;...typedef struc -
线性表的代码实现(C语言)
2020-04-08 21:02:44初始化一个空的线性表 int InitList(SqList *L){ L->elem = (ElemType *) malloc(list_init_size * sizeof(ElemType)); if (!L->elem) { exit(OVERFLOW); } L->length = 0; ...