关闭

【重回C】c语言之顺序表的部分基本操作

标签: 数据结构顺序表顺序表基本操作
182人阅读 评论(0) 收藏 举报
分类:
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef struct
{
	int data[MAXSIZE];
	int last;
}SeqList;  
void insert_list(SeqList *l,int pos,int data)
{
	int i;
	if(l->last>MAXSIZE-1) 
				{
					printf("空间溢出!");
				}
				else if(pos<1||pos>l->last+2)//插入前表长为last+1,插入后则为last+2 
				{
					printf("插入位置非法!");
				}
				else{
					for(i=l->last;i>=pos-1;i--)
					{
						l->data[i+1]=l->data[i];
					}
					l->data[pos-1]=data;
					l->last++;
				}
	
 } 
 void delete_list(SeqList *l,int pos)
 {
 		for(int i=pos;i<=l->last;i++)
					{
						l->data[i-1]=l->data[i];
					}
					l->last-=1;
  } 
int main(void)
{
	int choice,num,data,pos,i;
	SeqList l;
	while(true)
	{
		printf("  线性操作表练习\n");
		printf("1:创建一个数据表\n");
		printf("2:插入数据\n");
		printf("3:删除数据\n");
		printf("4:打印数据表中元素\n");
		printf("5:退出程序\n");
		printf("请输入选项:") ;
		scanf("%d",&choice);
		switch(choice)
		{
			case 1:
				printf("请输入你要创建的元素个数:");
				scanf("%d",&num);
				if(num>MAXSIZE)
				{
					printf("超出个数!");
					break;
				}
				printf("录入数据开始:");
				for(i=0;i<num;i++)
				{
					scanf("%d",&l.data[i]);
				}
				l.last=num-1;
				break;
			case 2:
				printf("请输入插入的元素值和位置:");
				scanf("%d %d",&data,&pos);
				insert_list(&l,pos,data);
				break; 
			case 3:
				printf("请输入你要删除元素所处的位置:");
				scanf("%d",&pos);
				if(pos<1||pos>l.last+1)
				{
					printf("输入的位置无效");
					break;
				}
				else
				{
					delete_list(&l,pos);
				}
				break;	
			case 4:
				printf("数据表为:");
				for(i=0;i<l.last+1;i++)
				{
					printf("%d ",l.data[i]);
				}
				printf("\n元素的个数为:%d ",l.last+1);
				break;	
			case 5:
				return 0;
				break;	
			default: 
				printf("没有这个选项!");
				break;		
		} 
	} 
} 
//由于很久没有接触过c了哈,会出现不少错误,本代码仅供参考 

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:29116次
    • 积分:654
    • 等级:
    • 排名:千里之外
    • 原创:35篇
    • 转载:7篇
    • 译文:0篇
    • 评论:2条
    文章分类