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

📄 单链表菜单.c

📁 单链表删除算法
💻 C
字号:
//单链表菜单 
#include "Stdio.h"
#include "Conio.h"

#define flag 0
typedef int datatype;
typedef struct node
{
    datatype data;
    struct node *next;
}LNode,*LinkList;

int menu_select();
LinkList Creat_LinkList();
LNode *Get_LinkList(LinkList H,int i);
int Insert_LinkList(LinkList H,int i,datatype x);
int Del_LinkList(LinkList H,int i);
void Put_LinkList(LinkList H);
LNode *Locate_LinkList(LinkList H,int i);

main()
{ 
    LinkList H;
    LNode *p;
    int i; 
    datatype x;
    for(;;)
    {
        switch(menu_select())
        {
            case 1:
                 printf("****************************\n");
                 printf("    单链表的建立\n");
                 printf("****************************\n");
                 H=Creat_LinkList();
                 break;
            case 2:
                 printf("****************************\n");
                 printf("    单链表的插入\n");
                 printf("****************************\n");
                 printf("输入 i:");
                 scanf("%d",&i);
                 printf("输入数字:");
                 scanf("%d",&x);
                 if(Insert_LinkList(H,i,x)==1)
                 Put_LinkList(H);
                 break;
            case 3:
                 printf("****************************\n");
                 printf("    通讯者信息的查询\n");
                 printf("****************************\n");   
                 printf("输入 x:");
                 scanf("%d",&x);
                 p=Locate_LinkList(H,x); 
                 if(p!=NULL)
                   printf("存在%d",x);
                 else
                   printf("不存在%d",x);
                 break;
            case 4:
                 printf("****************************\n");
                 printf("    通讯录信息的删除\n");
                 printf("****************************\n");
                 printf("输入 i:");
                 scanf("%d",&i);
                 if(Del_LinkList(H,i)==1)
                 Put_LinkList(H);
                 break;
            case 5:
                 printf("****************************\n");
                 printf("    通讯录链表的输出\n");
                 printf("****************************\n");
                 Put_LinkList(H);
                 break;
            case 0:
                 printf("  谢谢使用,再 见!\n");
                 getch();
                 return;
        }
    }    
}

int menu_select()
{
    int t;
    printf("\n      单链表管理\n");
    printf("=========================\n");
    printf("   1.单链表的建立\n");
    printf("   2.单链表的插入\n");
    printf("   3.单链表的查询\n");
    printf("   4.单链表的删除\n");
    printf("   5.单链表的输出\n");
    printf("   0.退  出  管理系统\n");
    printf("     请选择(0-5):");
    for(;;)
    {
        scanf("%d",&t);
        if(t<0||t>5)
            printf("\n\t输入错误,重选0-5:");
        else
            break;
    }
    return t;
}
LinkList Creat_LinkList()
{
    LinkList L=NULL;
    LNode *s,*R=NULL;
    int x;
    s=(LNode *)malloc(sizeof(LNode));
    R=s;
    L=s;
    scanf("%d",&x);
    while(x!=flag)
    {
        s=(LNode *)malloc(sizeof(LNode));
        s->data=x;
        R->next=s;
        R=s;
        scanf("%d",&x);
    }
    R->next=NULL;
    return L;
}
LNode *Locate_LinkList(LinkList H,datatype x)
{
    LNode *p=H->next;
    while(p!=NULL&&p->data!=x)
         p=p->next;
    return p;
}
LNode *Get_LinkList(LinkList H,int i)
{
    LNode *p=H;
    int j=0;
    while(p->next!=NULL&&j<i)
    {
        p=p->next;
        j++;
    }
    if(j==i) return p;
    else return NULL;
}
int Insert_LinkList(LinkList L,int i,datatype x)
{
    LNode *p,*s;
    p=Get_LinkList(L,i-1);
    if(p==NULL)
    {
        printf("参数i错!");
        return 0;
    }
    else
    {
        s=(LNode *)malloc(sizeof(LNode));
        s->data=x;
        s->next=p->next;
        p->next=s;
        return 1;
    }
}
int Del_LinkList(LinkList H,int i)
{
    LNode *p,*s;
    p=Get_LinkList(H,i-1);
    if(p==NULL)
    {
        printf("第i-1个结点不存在!");
        return -1;
    }
    else
     if(p->next==NULL)
      {
        printf("第i个结点不存在!");
        return 0;                
      }
      else
      {
        s=p->next;
        p->next=s->next;
        free(s);
        return 1;    
      } 
}
void Put_LinkList(LinkList H)
{
    LNode *p;
    p=H->next;
    while(p!=NULL)
    {
        printf("%d\t",p->data);
        p=p->next;
    }
}

⌨️ 快捷键说明

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