数据结构第一天

  主体部分
     1 #include "03_head.h"
     2	int main(int argc, const char *argv[])
     3	{
     4		Seq *list = creat_data();
     5		int a = 0;
     6		int b = 0;
     7		int c = 0;
     8		int d = 0;
     9		int i=0;
    10		for(i=0;;i++)
    11		{
    12			printf("添加数据_1\n");
    13			printf("查询数据_2\n");
    14			printf("修改数据_3\n");
    15			printf("删除数据_4\n");
    16			printf("遍历数据_5\n");
                printf("输入数据查询下角标'6'\n");
    17			printf("退出_0\n");
    18			int select = 0;
    19			printf("请输入>>>>>");
    20			scanf("%d",&select);
    21			switch(select)
    22			{
    23			case 1:
    24				printf("请选择--1 数据or 2 下标---");
    25				scanf("%d",&a);
    26				switch(a)
    27				{
    28				case 1:
    29					insert_data(list);
    30					break;
    31				case 2:
    32					subscript_insertion(list);
    33					break;
    34				}
    35				break;
    36			case 2:
    37				printf("请选择--1 数据or 2 下标---");
    38				scanf("%d",&b);
    39				switch(b)
    40				{
    41				case 1:
    42					looup(list);
    43					break;
    44				case 2:
    45					Loo_sub(list);
    46					break;
    47				}
    48				break;
    49			case 3:
    50				printf("请选择--1 数据or 2 下标---");
    51				scanf("%d",&c);
    52				switch(c)
    53				{
    54				case 1:
    55					modify_data(list);
    56					break;
    57				case 2:
    58					mod_sub(list);
    59					break;
    60				}
    61				break;
    62			case 4:
    63				printf("请选择--1 数据or 2 下标---");
    64				scanf("%d",&d);
    65				switch(d)
    66				{
    67				case 1:
    68					delete_data(list);
    69					break;
    70					case 2:
    71					delect_sub(list);
    72					break;
    73				}
    74				break;
    75			case 5:
    76				Traverse_data(list);
    77				break;
    78			case 0:
    79				goto Founce;
                 case 6:           
                     seek(list);   
                     break;        
    80			default:
    81				printf("<<<<<<输入错误>>>>>\n");
    82				break;
    83			}
    84		}
    85	Founce:
    86		return 0;
    87	}
   函数部分
    88	#include "03_head.h"
    89	Seq* creat_data()
    90	{
    91		Seq *list=(Seq*)malloc(sizeof(Seq));
    92		memset(list,0,sizeof(Seq));
    93		return list;
    94	}
    95	void insert_data(Seq *p)
    96	{
    97		if(p->index == N)
    98		{
    99			printf("--------顺序表已满--------\n");
   100			printf("<<<<<<请先删除不需要的数据在存储>>>>>>>>\n");
   101			return;
   102		}
   103	
   104		printf("<<<<<<<<<<<请输入>>>>>>>>>>>");
   105		int a;
   106		scanf("%d",&a);
   107		p->data[p->index] = a;
   108		p->index++;
   109		printf("<<<<<<<<输入成功>>>>>>>>>>>\n");
   110		for(int i=0;i<p->index;i++)
   111		{
   112			printf("%d ",p->data[i]);
   113		}
   114		putchar(10);
   115		
   116	}
   117	void looup(Seq *p)
   118	{
   119		if(0 == p->index)
   120		{
   121			printf("<<<<<还没有数据>>>>\n");
   122			return;
   123		}
   124		printf("<<<<<<<<<<请输入>>>>>>");
   125		int select;
   126		scanf("%d",&select);
   127		int i = 0;
   128		for(i=0;i<p->index;i++)
   129		{
   130			if(select == p->data[i])
   131			{
   132				printf("<<<<<<<<该数据为%d>>>>>>\n",p->data[i]);
   133				break;
   134			}
   135			if(i == p->index-1)
   136			{
   137				printf("<<<没有这个数据>>>\n");
   138			}
   139		}
   140	}
   141	void delete_data(Seq *p)
   142	{
   143		if(0 == p->index)
   144		{
   145			printf("<<<<<还没有数据>>>>\n");
   146			return;
   147		}
   148		printf("<<<<<<<<<请输入>>>>>");
   149		int select;
   150		scanf("%d",&select);
   151		int i = 0;
   152		for(i=0;i<p->index;i++)
   153		{
   154			if(select == p->data[i])
   155			{
   156				for(int j=i;j<N;j++)
   157				{
   158					p->data[j]=p->data[j+1];
   159					printf("<<<<<<<<<<<删除完成>>>>>>>>>>\n");
   160				}
   161			}
   162		}
   163		p->index--;
   164	
   165		for(int i=0;i<p->index;i++)
   166		{
   167			printf("%d ",p->data[i]);
   168		}
   169		putchar(10);
   170	}
   171	void modify_data(Seq *p)
   172	{
   173		if(0 == p->index)
   174		{
   175			printf("<<<<<还没有数据>>>>\n");
   176			return;
   177		}
   178		printf("<<<<请输入要修改哪一个数据>>");
   179		int select1;
   180		scanf("%d",&select1);
   181		printf("<<<<<请输入修改后的数据>>");
   182		int select2;
   183		scanf("%d",&select2);
   184		for(int i=0;i<p->index;i++)
   185		{
   186			if(select1 == p->data[i])
   187			{
   188				p->data[i] = select2;
   189				printf("<<<<<修改完成>>>>>\n");
   190			}
   191		}
   192		for(int i=0;i<p->index;i++)
   193		{
   194			printf("%d ",p->data[i]);
   195		}
   196		putchar(10);
   197	}
   198	//^^^^^^^^^^^^^^^按照数据修改文件^^^^^^^^^^^^^
   199	//---------------按照下标修改数据-------------
   200	void subscript_insertion(Seq *p)
   201	{
   202		printf("请输入需要插入的下标位置0---%d>>>>>>",p->index);
   203		int select1;
   204		scanf("%d",&select1);
   205		if(select1 < 0 || select1 > p->index)
   206		{
   207			printf("输入的下标不合法\n");
   208			return;
   209		}
   210		printf("请输入要添加的数据");
   211		int select2;
   212		scanf("%d",&select2);
   213		if(0 == p->index)
   214		{
   215			printf("<<<<<还没有数据>>>>\n");
   216			return;
   217		}
   218		p->index++;
   219		int c;
   220		for(int i=p->index;i>=select1;i--)
   221		{
   222			p->data[i]=p->data[i-1];
   223			c=i;
   224		}
   225		p->data[c]=select2;
   226		printf("插入成功\n");
   227		for(int i=0;i<p->index;i++)
   228		{
   229			printf("%d ",p->data[i]);
   230		}
   231		putchar(10);
   232	}
   233	void delect_sub(Seq *p)
   234	{
   235		if(0 == p->index)
   236		{
   237			printf("<<<<<还没有数据>>>>\n");
   238			return;
   239		}
   240		printf("请输入需要插入的下标位置0---%d>>>>>>",(p->index)-1);
   241		int select1;
   242		scanf("%d",&select1);
   243		if(select1 < 0 || select1 > p->index)
   244		{
   245			printf("输入的下标不合法\n");
   246			return;
   247		}
   248		for(int i=select1;i<p->index;i++)
   249		{
   250			p->data[i] = p->data[i+1];
   251			printf("删除成功\n");
   252		}
   253		p->index--;
   254		for(int i=0;i<p->index;i++)
   255		{
   256			printf("%d ",p->data[i]);
   257		}
   258		putchar(10);
   259	}
   260	void mod_sub(Seq *p)//修改
   261	{
   262		if(0 == p->index)
   263		{
   264			printf("<<<<<还没有数据>>>>\n");
   265			return;
   266		}
   267		printf("<<<<请输入下标位置>>>>\n");
   268		int select1;
   269		scanf("%d",&select1);
   270		printf("<<<<<请输入数据>>>>\n");
   271		int select2;
   272		scanf("%d",&select2);
   273		p->data[select1]=select2;
   274		for(int i=0;i<p->index;i++)
   275		{
   276			printf("%d ",p->data[i]);
   277		}
   278		putchar(10);
   279	
   280	}
   281	void Loo_sub(Seq *p)
   282	{
   283		printf("<<<<<请输入下标位置:0-----%d>>>>>",(p->index)-1);
   284		int select;
   285		scanf("%d",&select);
   286		if(select > p->index || 0 == index)
   287		{
   288			printf("数据不存在");
   289			return;
   290		}
   291		printf("该数据为%d\n",p->data[select]);
   292	}
   293	void Traverse_data(Seq *p)
   294	{
   295		if(0 == p->index)
   296		{
   297			printf("<<<<<还没有数据>>>>\n");
   298			return;
   299		}
   300		printf("%d",p->index);
   301		for(int j=0;j<p->index;j++)
   302		{
   303			for(int k=j+1;k<p->index;k++)
   304			{
   305				if(p->data[j] == p->data[k])
   306				{
   307					for(int n=k;n<p->index-1;n++)
   308					{
   309						p->data[n] = p->data[n+1];
   310					}
   311					k--;
   312					p->index--;
   313				}
   314			}
   315		}
   316		printf("%d\n",p->index);
   317		for(int i=0;i<p->index;i++)
   318		{
   319			printf("%d ",p->data[i]);
   320		}
   321		putchar(10);
   322	}
   333  void seek(Seq *p)                           
   334     {                                           
   335         printf("请输入数据\n");                 
   336         int select = 0;                         
   337         scanf("%d",&select);                    
   338         int i = 0;                              
   339         for(i=0;i<p->index;i++)                 
   340         {                                           
   341             if(p->data[i] == select)            
   342             {                                   
   343                 printf("%d\n",i);               
   344             }                                   
   345             if(i == p->index-1)                 
   346             {                                   
   347                 printf("<<<没有这个数据>>>\n"); 
   348             }                                   
   349         }                                       
   350                                         
   351     }                                           

   头文件部分
   323	#ifndef __FUN_H__
   324	#define __FUN_H__
   325	#include <stdio.h>
   326	#include <string.h>
   327	#include <stdlib.h>
   328	#define N 50
   329	typedef int dataType;
   330	typedef struct
   331	{
   332		dataType data[N];
   333		int index;
   334	}Seq;
   336	Seq* creat_data();
   338	void insert_data(Seq *p);
   340	void Traverse_data(Seq *p);
   341	void looup(Seq *p);
   342	void delete_data(Seq *p);
   343	void modify_data(Seq *p);
   344	void subscript_insertion(Seq *p);
   345	void delect_sub(Seq *p);
   346	void Loo_sub(Seq *p);
   347	void mod_sub(Seq *p);
   348    void seek(Seq *p) 
   349	#endif

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值