创建顺序表并实现各种操作(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");
}

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;
         m:
	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));
	        goto m;
          case 2:
		{

		printf("input a number:");
		scanf("%d",&i);
		getElement(p,i);
		goto m;
		}
	case 3: 	add(p);
		goto m;

           case 4:  {
		printf("input value of i:");
		scanf("%d",&i);
		Delete(p,i);
                   goto m;

                     }
	case 5: insert(p);
		goto m;
	case 6: show(p);
		goto m;

          case 7:  {
		printf("input value of i:");
		scanf("%d",&i);
		modify(p,i);
		goto m;
	         }
	case 8: clear(p);
	 	goto m;

         case 0: exit(0);

         default: break;
	}
	return 0;
}

<img src="http://img.blog.csdn.net/20150408172940047?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3NodWFuZ3Rhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<img alt="" src="http://img.blog.csdn.net/20150408162602645?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3NodWFuZ3Rhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />
时间: 2024-11-06 12:00:06

创建顺序表并实现各种操作(C语言)的相关文章

c数据结构 顺序表和链表 相关操作

编译器:vs2013 内容: #include "stdafx.h"#include<stdio.h>#include<malloc.h>#include<stdlib.h> #define LINK_INIT_SIZE 100#define LISTINCREAMENT 10#define ElemType int#define OVERFLOW -2#define OK 1#define ERROR 0 typedef int status; /

如何创建顺序表以及对标的一些操作

# include <stdio.h># include<string.h># include<memory.h># include<assert.h># define MAX_SIZE 100typedef int DataType;typedef struct SeqList{ DataType arry[MAX_SIZE]; size_t size;}SeqList;//定义一个结构体顺序表void InitSeqList(SeqList * pSeq

顺序表的一些重要操作

ArrayList 常用操作:构造方法:ArrayList(); 构造空的·顺序表,容量是默认容量ArrayList(int capacity); 构造空的顺序表,容量是CapacityArrayList(Collection c); 构造一个顺序表,把C中的所有元素放到顺序表中List<Integer> origin=Arrays.asList(1,2,3,4,5);ArrayList<Integer> list=new ArrayList<>(origin);常用方

在创建顺序表的时候出现的问题

调试的才能发现问题出现在哪里 #include <stdlib.h> #include "Orderfist.h" status InsertList_Sq( SqList L[] ) /* 在链表插入一个元素 */ { INT32 i32OSM = 1; UINT32 Insert_position = 0U, Insert_data = 0U, u32i = 0U, u32j =0U; /* 定义一个无符号的位置插入变量,数据变量,和循环体变量 */ i32OSM =

顺序表 其他操作

1 实验2 顺序表其它操作 2 实验目的 3 1.进一步掌握在线性表的顺序存储结构上的一些其它操作. 4 实验内容 5 程序1 6 已知一个线性表,用另辟空间和利用原表两种方法把线性表逆置. 7 设计要求:在程序中构造三个子程序分别为 8 SeqList reverse(SeqList A) /*顺序表的就地逆置 */ 9 void ListTraverse(SeqList L) /* 遍历顺序表 */ 10 SeqList create(int n) /* 建立顺序表 */ 11 12 程序2

动态分配的顺序线性表的十五种操作—C语言实现

线性表 定义:是最常用的,也是最简单的数据结构,是长度为n个数据元素的有序的序列. 含有大量记录的线性表叫文件 记录:稍微复杂的线性表里,数据元素为若干个数据项组成,这时把一个数据元素叫记录 结构特点:在非空有限的条件下,存在唯一的一个表头结点,唯一的一个表尾结点,除去第一个元素之外,每个数据元素都只有一个前驱,除去最后一个元素之外,每一个数据元素都只有一个后继. 注意:线性表中的数据元素可以是各种各样的,但同一线性表中的元素必定具有相同特性(属于同一数据对象,类似数组).线性表的数据元素间有序

顺序表

#include <cstdio> #include <cstring> ///都用c语言写的 #include <iostream> ///建议从主函数开始看 #include <cstdlib> using namespace std; int sequence_map[1000]; int total_sequence = 0; void init_sequence() ///主界面. ///一级菜单中顺序表的操作界面 init初始化 { printf

JAVA实现具有迭代器的线性表(顺序表)

1,先了解下JAVA类库中的迭代器:JAVA提供了两种基本类型的迭代器,分别用两个接口来表示:Iterator<T>,ListIterator<T>.其中,Iterator<T>接口中只定义了三个方法:hasNext().iterator().next(),而ListIterator<T>中,除了拥有前面所述的三种方法外,而另外拥有hasPrevious().previous().remove().set()等其他方法(具体参考JDK文档). 这说明:实现了

C#顺序表

1 数据是外部世界的载体,能够被计算机处理加工.2数据元素是数据的基本单位,如,学生的姓名.性别.班级等等. 3数据对象是数据的一个集合,如 人类,狗类,等等属于数据对象,对象里又有数据元素 4数据类型,如整形,字符串,结构体等等, 5.数据结构通常分为4种,5.1集合 如HashSet<T>类主要是设计用来做高性能集运算的,(交集.并集.差集) 后续再谈HashSet<>. 5.2线性结构 数据元素从在一对一的关系 如 数组.list<>.Stack<>.