投降了 2020-11-19 20:18 采纳率: 0%
浏览 7

求大佬教教如何不退出重复进行

#include<stdlib.h>
#include<stdio.h>

typedef struct LNode
{
  int data;
  struct LNode *next;
}*LinkedList,LNode;


LinkedList LinkedListInit() //初始化单链表 
{
 LNode *head;
 head=(LNode*)malloc(sizeof(LNode));
 return head;
}

LinkedList LinkedListCreat() //用尾插法建立单链表 
{ 
	int len;
	int i; 
	int val;
 
	// 分配了一个不存放有效数据的头节点
	LinkedList head=(LNode*)malloc(sizeof(LNode)); 
	if(NULL==head) 
	{ 
		printf(" 分配失败,程序终止! n"); 
		exit(-1); 
	} 
	LinkedList pTail=head;
	LinkedList pNew;
	
	pTail->next=NULL;
	 
	printf(" 请输入您需要生成的链表结点的个数: "); 
	scanf("%d",&len); 
	printf("n");
	for (i=0;i<len;i++) 
	{ 
		printf(" 请输入第 %d 个结点的值 : ",i+1); 
		scanf("%d",&val);
		printf("n"); 
		pNew=(LNode*)malloc(sizeof(LNode));
		if(NULL==pNew) 
		{ 
			printf(" 分配失败,程序终止! n"); 
			exit(-1); 
		} 
		pNew->data=val;
		pTail->next=pNew; 		
		pTail=pNew; 
	} 
	pNew->next = NULL;
	return head; 
} 
 

void LinkedListTraverse(LinkedList L){ //1 遍历单链表 
  	while(L!=NULL)
	{	
		L=L->next;
		printf("n"); 
  		printf("%dn", L->data);
 	}
} 

void LinkedListClear(LinkedList L) //2 清空单链表 
{	 
	struct LNode *node;
	while(L->next!=NULL)
	{
		node = L;
		free(node);
		L = L->next;
	}
	free(L);
}


int LinkedListEmpty(LinkedList L) //3 检查单链表是否为空 
{	
	if(L->next==NULL)
	{
	
		printf("n"); 
		printf("单链表为空");
	}
	else
	{
	
	    printf("n"); 
		printf("单链表不为空"); 
	}
}

int LinkedListLength(LinkedList L) //4 求单链表的长度 
{	
	LinkedList p = L->next; 
	int len = 0;
	while(NULL!=p)
	{
		len++;
		p = p->next;
	}
	printf("n"); 
	printf("单链表的长度为 :%dn",len);
	return len;
}
	
LinkedList LinkedListGet(LinkedList L, int i) //5 从单链表中查找元素 
{
	LinkedList p = L->next;
	if(L->next==NULL)
  		printf("该链表为空n");
	int j = 1;
	while(p&&j<i)
	{
		p = p->next;
		i++;
	}
	if(!p||j>i)
		exit(-1);
	printf("n");
	printf("数据的值为%dn",p->data);	
}
 
void LinkedListInsert(LinkedList L, int i, int x) //6  向单链表中插入元素 
{
	LinkedList p = L;
	if(L->next==NULL)
  		printf("该链表为空n");
	int j = 0;
	while(p&&j<i-1)
	{
		p = p->next;
		j++; 
	}
	if(!p||j>i-1) 
		exit(-1);
	LinkedList s = (LNode*)malloc(sizeof(LNode));
	s->data = x;
	s->next = p->next;
	p->next = s;
	  	while(L!=NULL)
	{	
		L=L->next;
		printf("n"); 
  		printf("%dn", L->data);
	}
} 

void LinkedListDel(LinkedList L, int i) //7 从单链表中删除元素 
{
	LinkedList p = L;
	if(L->next==NULL)
  		printf("该链表为空n");
	int j = 0;
	while(p&&j<i-1)
	{
		p = p->next;
		j++; 
	}
	if(!p||j>i-1) 
		exit(-1);
	p->next = p->next->next;
	  	while(L!=NULL)
	{	
		L=L->next;
		printf("n"); 
  		printf("%dn", L->data);
  	}
 } 
 
int LinkedListLocate(LinkedList L, int x) //8 从单链表中按值查找与给定值相同的元素在链表中的位置 
{

	LinkedList p = L->next;
	int i = 0;
	if(L->next==NULL)
  		printf("该链表为空n");
	while (p && p->data != x)
	{
		p = p->next;
		i++;
	}
	if (p && p->data == x){
		i++;
		printf(":%d",i);
		
	}
	else
	{	
		printf("n"); 
		printf("你所要查找的数据不存在!");
	}

}
 
int main()
{	
	LinkedListInit();
	LinkedList L = LinkedListCreat();
	int i, x;
	printf("1:遍历单链表 2:清空单链表 3:检查单链表是否为空 4:检查单链表的长度 5:查找元素 6:插入元素 7: 删除元素 8:查找与给定值相同的元素n");
	printf("n");
	printf("输入想要的功能 : "); 
	scanf("%d",&i);	
	switch(i){
	case 1:{
		LinkedListTraverse(L);
		break;
	}
	case 2: {
		LinkedListClear(L);
		break;
		}
 	case 3:{
		 LinkedListEmpty(L);
		 break;
		}
	case 4:{
		LinkedListLength(L);
		break;
		}
			
	case 5: {
		printf("n"); 
		printf("请输入要查找第几个元素的数据 : ");
		scanf("%d",&i);	
		LinkedListGet(L, i);
		break;	
	}		
	case 6: {
		printf("n"); 
		printf("请输入在第几个结点之前插入数据 : ");
 		scanf("%d",&i);
 		printf("n");
 		printf("插入的数据的值为 : "); 
 		scanf("%d",&x); 
		LinkedListInsert(L, i, x);
 		break;
 		}	
	case 7: {
		printf("n"); 
		printf("请输入想要删除第几个结点的数据 : ");
 		scanf("%d",&i);
		LinkedListDel(L, i);
		break;
		}
	case 8: {
		printf("n"); 
		printf("请输入想要查找元素的数据 : ");
 		scanf("%d",&x);
		LinkedListLocate(L,x);
 		break;
 		}
	return 0;
	}
} 

有没有大佬知道怎么运行一次后,不用重新运行就可以重复进行功能

 

  • 写回答

1条回答 默认 最新

  • CodeMoggy 2020-11-19 22:01
    关注

    把你的主函数的内容放在一个死循环里面就可以了!

    评论

报告相同问题?

悬赏问题

  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)