顺序表的实现(C语言)

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
struct List
{
	int element[MAXSIZE];  //链表中最大节点数
	int len;                //当前链表的长度
}*t;

void print(List *t);
int Isemtty(List *t)      //判断链表是否为空
{
	if(t->len==0)
		return 0;
	else
		return -1;
}

void getElement(List *t,int i) //获取表中第i个元素(下标从0开始)
{
	if(i<0||i>t->len)
		printf("fail!\n");
	else
		printf("%d\n",t->element[i]);
}

void add(List *t)             //向链表中添加节点
{
    int i,j;
	printf("input the count of new numner:");
	scanf("%d",&j);
	printf("input new numbers:\n");
	for(i=0;i<j;i++)
	{
		scanf("%d",&(t->element[i]));
		t->len++;
	}
	printf("添加成功!\n");
}

void insert(List *t)
{
	int i,j,x;
	printf("input the value of i and x :");  //在表中第i个节点之前插入一个节点
	scanf("%d%d",&i,&x);
	if(i<=0||i>t->len||t->len==MAXSIZE)  //可以插入的条件
		printf("can not insret!\n");
	else
	{
		for(j=t->len;j>=i;j--)
		{
			t->element[j]=t->element[j-1];  //从插入位置开始所有节点后移
		}
		t->element[i]=x;
		t->len++;
    }

}

void Delete(List *t,int i)               //删除表中第i节点
{
	int j;
	if(i<0||i>=t->len)
		printf("can not delete!\n");
	else
	{
		for(j=i;j<t->len;j++)
			t->element[j]=t->element[j+1];  //从被删除位置下一个节点开始所有节点前移
		t->len--;
	}
}
void clear(List *t)             //清空链表
{
	t->len=0;
}

void modify(List *t,int i)   //修改链表中第i个节点
{   int b;
printf("intut a number:");
scanf("%d",&b);
if(i<0||i>t->len)
printf("can not modify!\n");
else
t->element[i]=b;

}

void show(List *t)     //显示链表中所有节点的数据
{
	int i=0;
	for(;i<t->len;i++)
		printf("%2d",t->element[i]);
	printf("\n");
}

int main()
{

	struct List *p;
    p=new List;
	p->len=0;
	int ch,i,x;
    add(p);
	while(1)
	{
	printf("******************************************************\n");
	printf(" 1.judge 2.Getelement 3.add  4.delete \n 5.insert 6.show 7.modify 8.clear 0.quit\n");
	printf("******************************************************\n");
	printf("please input your choice:");
	scanf("%d",&ch);
	switch(ch)
	{
	case 1: printf("%d\n",Isemtty(p));
		    break;
	case 2:
		{

			printf("input a number:");
			scanf("%d",&i);
			getElement(p,i);
		    break;
		}
	case 3: add(p);
		   break;
	case 4:  {
		 printf("input value of i:");
		 scanf("%d",&i);
		 Delete(p,i);
		 break;
			 }
	case 5: insert(p);
		    break;
	case 6: show(p);
	        break;
	case 7:  {
		printf("input value of i:");
		scanf("%d",&i);
		modify(p,i);
	     break;
			 }
	case 8: clear(p);
		    break;
	case 0: exit(0);
   	default:printf("你的输入有误!请重新输入");
		    break;
			}
	}
	return 0;
}

时间: 2024-10-15 23:12:26

顺序表的实现(C语言)的相关文章

Java语言描述顺序表类,顺序表类的基本操作实现

数据结构(Java版)ch2 线性表的顺序存储(顺序表) 线性表的抽象数据Java接口描述如下: package ch2; /** * 线性表的抽象数据接口,用Java语言描述线性表的这些功能! * @author 房廷飞 * */ public interface IList { public void clear(); //将线型表置成空表 public boolean isEmpty(); //判断是不是空表 public int length(); //返回线性表的长度 public O

DS顺序表--类实现

题目描述 实现顺序表的用C++语言和类实现顺序表 属性包括:数组.实际长度.最大长度(设定为1000) 操作包括:创建.插入.删除.查找 类定义参考 输入 第1行先输入n表示有n个数据,即n是实际长度:接着输入n个数据第2行输入要插入的位置和新数据第3行输入要插入的位置和新数据第4行输入要删除的位置第5行输入要删除的位置第6行输入要查找的位置第7行输入要查找的位置 输出 数据之间用空格隔开 第1行输出创建后的顺序表内容,包括顺序表实际长度和数据 每成功执行一次操作(插入或删除),输出执行后的顺序

稀疏矩阵的三元组顺序表的C语言实现

对于没有排序功能的集合来说,都可以使用java.util.Collections.sort()方法进行排序,它除了集合对象以外,还需要提供一个比较器.如果列表中的元素全部都是相同的类型,并且这个类实现了Comparable接口,就可以简单的调用Collections.sort()方法,如果这个类没有实现comparable接口,那么可以创建一个比较器传递一个Comparator实例作为Sort()的第二个参数进行排序,另外,如果不想使用默认的分类顺序进行排序,同样也可以传递一个Comparato

C语言实现顺序表的增删查改以及排序

顺序表是线性表中的一种重要的数据结构,也是最基础的数据结构,今天我用C语言实现下线性表的基本操作,以及冒泡排序与选择排序在线性表中的算法实践,代码如下: seqlist.h: #ifndef __SEQLIST__ #define __SEQLIST__ #define MAX 5 #include <stdlib.h> typedef int DataType; typedef struct SeqList { DataType array[MAX]; size_t size; }SeqLi

利用C语言实现顺序表

利用C语言实现静态顺序表 //---------- 头文件#include "SeqList.h" -------------------- #pragma once #include<stdio.h>#include<stdlib.h>#include<string.h> #define MAX 100 //------------------ 定义数据类型 ----------------------------typedef int DataT

(续)顺序表之单循环链表(C语言实现)

单循环链表和单链表的唯一区别在于单循环链表的最后一个节点的指针域指向第一个节点, 使得整个链表形成一个环. C实现代码如下: #include<stdio.h> typedef struct node { int data; struct node *next; }Node; //链表的初始化 Node* InitList(int number) { int i; Node *pHead=(Node *)malloc(sizeof(Node)); Node *TempHead=pHead; N

C语言实现顺序表

顺序表是C语言中一种基本的结构,可以存储各种基本类型的数据,而且不但可以存储基本类型的数据,也可以存储一种结构.所以顺序表是一种在学C的过程中必须掌握的结构,通过学习整理,下面来实现一下: 首先,先要想好用什么实现,一般实现最基本的顺序表的话直接用数组实现,我们在这用一个结构体来封装这个顺序表(封装这一概念是在C++中最常用的概念) #define ARRAY_EMPTY -2 #define ARRAY_FULL -1 #define MAX_SIZE 10000 typedef int Da

顺序表的C语言实现

一直在复习数学,想着要在六月底之前把数学三门四本书都过一遍,最近看到了线性代数了,好多学了都忘记了,慢慢来吧! 前段时间看的线性表了,才看了一点点,关于顺序表大致实现了下,后面抽看看看数据结构了,数学得全力复习了.准备暑假开始系统复习专业课,加油吧! 顺序表代码如下,简单实现了下,正好抓住这个机会复习了结构体,指针等知识.main()函数里写的比较乱,主要在于其他子函数里的实现 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #defi

c语言实现数据结构中的顺序表

以下是我用c语言实现的顺序表 /  #pragma once;    #ifndef _STDLIB_H    #include <stdlib.h>    #endif    #ifndef _ELEMTYPE_H    typedef int ElemType;                                   #endif    #ifndef _SORTTYPE_H    typedef int SortType;        #endif  #ifndef _FU

【数据结构】之顺序表(Java语言描述)

之前总结过使用C语言描述的顺序表数据结构.在C语言类库中没有为我们提供顺序表的数据结构,因此我们需要自己手写,详细的有关顺序表的数据结构描述和C语言代码请见[我的这篇文章]. 在Java语言的JDK中,为我们提供了专门的顺序表的数据结构API-- ArrayList . Java中的ArrayList的基本存储思路和C语言中的思路相似,即将所有元素存储在一个数组中,当数组中的元素个数达到某种标准时,就要扩容.由于顺序表中的其他操作在Java和C中的实现方式大同小异,因此,本文不再详细介绍这些操作