数据结构之线性表(纯代码)

本文详细介绍了如何使用C语言实现线性表的三种常见形式:单链表、双链表和循环链表。包括了增、删、查、改等基本操作的代码实现。
摘要由CSDN通过智能技术生成

线性表的链式表示和实现

单链表

关于单链表的增删查改基本功能的代码实现(c语言)

#include<stdio.h> 
#include <stdlib.h>
#include<string.h>
typedef struct List{
   
	char menu[20];//菜名 
	int charge;//价格 
	struct List *next;
}List1;
List1 *L;
void AddList(List1 *L){
   
	int n;             
    List1 *p1,*p2;
    p1=(List1 *)malloc(sizeof(List1)); 
    if(p1!=NULL)
    {
   
        L->next=p1;
        while(1)
       {
   
            printf("\t请输入想要添加菜名:");
        	scanf("%s",p1->menu);
        	printf("\t请输入此菜品的价格:");  	
        	scanf("%d",&p1->charge);
            p2=p1;
            p1=(List1 *)malloc(sizeof(List1));
            if(p1!=NULL)
                p2->next=p1;
            printf("\n请选择是否继续输入:1.继续  2.退出\n请选择:"); 
            scanf("%d",&n);
            if(n==1)           
                continue;
            else                
            {
   
                printf("\t输入成功\n");
                p2->next=NULL;
                free(p1);        
                break;
            }
        }
    }
}
void GetList(List1 *L){
   
	char menu[20];
	List1 *p1,*p2;
	int n;
	p1=L->next;
	printf("请输入\n1.查看全部菜单\n2.查找单个菜名\n");
    scanf("%d",&n);
    if(n==1){
   
	    if(p1==NULL) printf("\t菜单为空\n"); 
    	while(p1!=NULL){
   
        	printf("菜名:%s\t价格:%d\n",p1->menu,p1->charge);
	        p1=p1->next;
    	}
	}
	else{
   
		printf("请输入要查找的菜名");
        scanf("%s",menu);
    	while(p1!=NULL){
   	
        	if(!strcmp(p1->menu,menu)){
   
        	printf("菜名:%s",p1->menu);
	        printf("价格:%d\n",p1->charge);
	        break;
		    }
	       	p1=p1->next;
        }
        if(p1==NULL) printf("\t查无此菜\n");
	}
}
void ListDelete(List1 *L){
   
    char menu[20]; 
	List1 *p1,*p2;
	int num=0; 
    printf("请输入要删除的菜名:");
	scanf("%s",menu);
	p1=L;
	p2=p1->next;
	if(p2==NULL) printf("\t菜单为空\n");
	else{
   
    	while(p1!=NULL){
   
	    	if(strcmp(p2->menu,menu)==0){
   
		    p1->next=p2->next;
    		num=1;
	    	free(p2);
	    	printf("\t删除成功\n");
    		break;
	    	}
	    	p2=p2->next;
		    p1=p1->next;
		    if(p2==NULL){
   
		    	printf("\t查无此菜\n");
	    		break;
		    }
	    }
	}
	//if(num==0) printf("\t查无此菜\n");
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值