⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 link.txt

📁 数据结构链表 创建链表
💻 TXT
字号:
#include<stdio.h>
#include<conio.h>
#define MAXLEN 100
typedef struct
{ 
	int data[MAXLEN];   
    int last;
} SeqList;          
SeqList *L;
SeqList *InitList( );
int InsList(SeqList *L,int i,int x);
int DelList(SeqList *L,int i);
void LocationSeqList(SeqList *L, int x);
void ShowList( );

int main()
{   
	printf("\t\t\t顺序表子系统\n");
	printf("\t\t\t********************\n");
	printf("\t\t\t**   1-插入元素   **\n");
	printf("\t\t\t**   2-删除元素   **\n");
	printf("\t\t\t**   3-按值查找   **\n");
	printf("\t\t\t********************\n");
    printf("\t\t\t选择(1-3)操作:\n");
	InitList();
	int i;
	for(i=1;i<15;i++)
	{
		InsList(L,i,2*i-1);
	}
	ShowList();
	printf("\n");
   	printf("\t请选择1~3操作:");
	char c1;
	scanf("%c",&c1);
	switch(c1)
	{
	   case'1':
	   {
		  int i,p;
		  printf("\n\t请输入你要插入的元素位置:");
		  scanf("\t%d",&i);
		  printf("\n\t请输入你要插入的元素:");
		  scanf("\t%d",&p);
	     
		 {
	int j;
	if (L->last==MAXLEN-1)
	{ 
		printf ("\t顺序表已满!");
		return(-1);							// 表满,不能插入
	} 	
	if (i<1 || i>L->last+2)                 // 检查给定的插入位置的正确性
	{
		printf("\t位置出错!");
		return(0); 
	} 
	for(j=L->last;j>=i-1;j--)		  // 结点移动 
	{
		  L->data[j+1]=L->data[j];  
	}	  
	L->data[i-1]=p;							// 新元素插入
	L->last++;
	printf("\t显示插入元素后的所有顺序表\n");
    ShowList();	// last仍指向最后元素
	return (1);	                 
    }
	  }
	  break;
	   case'2':
	   {  
		  printf("\t请输入删除第几个元素:");
		  int n;
		  scanf("%d",&n);
		  printf("\n\t显示删除后顺序表的所有元素:");	
		  DelList(L,n);// 删除第4个元素
		  ShowList();
	   }
	   break;
       case'3':
	   {
		  printf("\t请输入查找的元素:");
		  int m;
		  scanf("%d",&m);
		  LocationSeqList(L,m);			    // 查找元素16
		  printf("\n\t");
		  getch();
	   }
	   break;
       default:printf("\t输入有误,请确认后再输入!");
	}
}
SeqList *InitList( )
{ 
	L=new SeqList;
	L->last=-1;   							// 初始的顺序表为空
	return L;
}
int InsList(SeqList *L,int i,int x)
{
	int j;
	if (L->last==MAXLEN-1)
	{ 
		printf ("\t顺序表已满!");
		return(-1);							// 表满,不能插入
	} 	
	if (i<1 || i>L->last+2)                 // 检查给定的插入位置的正确性
	{
		printf("\t位置出错!");
		return(0); 
	} 
	for(j=L->last;j>=i-1;j--)				// 结点移动 
	L->data[j+1]=L->data[j];     
	L->data[i-1]=x;							// 新元素插入
	L->last++;								// last仍指向最后元素
	return (1);								// 插入成功,返回
}
int DelList(SeqList *L,int i)  
{ 
	int j;
	if(i<1 || i>L->last+1)					// 检查空表及删除位置的合法性
	{
		printf ("\t不存在第i个元素");
		return (0);
	}
	for(j=i;j<=L->last;j++)					// 向上移动
	L->data[j-1]=L->data[j]; 
	L->last--;   							// last仍指向最后元素
	return(1);								// 删除成功
}
void LocationSeqList(SeqList *L, int x)
{  
	int i=0;
	while(i<=L->last && L->data[i]!=x)
		i++;
	if (i>L->last)
		printf("\n\t未找到元素%d!\n",x);
	else
		printf("\n\t查找元素%d的位置为第%d位\n",x,i+1); // 输出存储位置
}
void ShowList( )
{
	if(L->last==-1)
		printf("\n\t顺序表为空!\n");
	else
	{
		printf("\n\t");
		int i=0;
		while(i<=L->last)
		{
			printf("%-5d",L->data[i]);
			i++;
		}
	}
	printf("\n\t");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -