回 帖 发 新 帖 刷新版面

主题:数据结构第二个程序--链表!!写得不好哦

[b][size=4][color=FF00FF]我的blog,[url=http://www.9ite.cn]http://www.9ite.cn[/url]欢迎大家来踩[/color][/size][/b]



#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#include "conio.h"
typedef struct node
{
    int data;
    struct node *next;
}Lnode,*Linklist;
Linklist Great_Linklist()
{
    int x;
    Linklist L=NULL;
    Lnode *s;
    scanf("%d",&x);
    while(x!=0)
    {
        s=new Lnode;
        s->data=x;
        s->next=L;
        L=s;
        scanf("%d",&x);
    }
    return L;
}
Lnode *Get_Linklist(Linklist L,int i)
{
    Lnode *s=L;
    int j=0;
    while(s->next!=NULL&&j<i)
    {
        s=s->next;
        j++;
    }
    if(j==i)
    return s;
    else return NULL;
}
int Insert_Linklist(Linklist L,int i,int x)
{
 Lnode *s,*p;
 s=Get_Linklist(L,i-1);
 if(s==NULL)
    {
     printf("第i-1个结点不存在!");
     return 0;
 }
 else
 {
     p=new Lnode;
     p->data=x;
     p->next=s->next;
     s->next=p;
     return 1;
 }
}
int Del_Linklist(Linklist L,int i)
{
    Linklist q,s;
    q=Get_Linklist(L,i-1);
    if(q==NULL)
    {
        printf("第i-1个结点不存在!删除失败!");
        return -1;
    }
    if(q->next==NULL)
    {
        printf("第i个结点不存在!删除失败!");
        return 0;
    }
    s=q->next;
    q->next=s->next;
    free(s);
    return 1;
}

void Print_Linklist(Linklist L)
{
    Lnode *s=L;
    while(s->next!=NULL)
    {
        printf("%d->",s->data);
        s=s->next;
    }
    printf("%d\n",s->data);
}

void main()
{
    Linklist L,q;
    int k,flag,x,i;
    do{
        printf("\n\n\n");
        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**     4--查     找         **\n");
        printf("\t\t\t**     5--打     印         **\n");
        printf("\t\t\t**     0--返     回         **\n");
        printf("\t\t\t******************************\n");
        printf("\t\t\t   请选择菜单项(0-5):");
        scanf("%d",&k);
        switch(k)
        {
        case 1:
            printf("请为表输入元素!\n");
            L=Great_Linklist();
            printf("\n表已建立!按任意键返回...");
            getch();
            system("cls");
            break;
        case 2:
            printf("请输入要插入的元素x和位置i(x,i):");
            scanf("%d,%d",&x,&i);
            flag=Insert_Linklist(L,i,x);
            if(flag==1)
                printf("插入成功!按任意键返回...");
            getch();
            system("cls");
            break;
        case 3:
            printf("请输入要删除的位置i:");
            scanf("%d",&i);
            flag=Del_Linklist(L,i);
            if(flag==1)
            printf("删除成功!按任意键返回...");
            getch();
            system("cls");
            break;
        case 4:
            printf("请输入要查找的位置i:");
            scanf("%d",&i);
            q=Get_Linklist(L,i);
            if(q==NULL)
                printf("该结点不存在!");
            else
            printf("该位置的元素为:%d",q->data);
            printf(" 按任意键返回...");
            getch();
            system("cls");
            break;
        case 5:
            printf("该链表的元素为:\n");
            Print_Linklist(L);
            printf("按任意键返回....");
            getch();
            system("cls");
            break;
        }
    }while(k!=0);
}

回复列表 (共2个回复)

沙发

还是希望注意int main的问题

板凳

为什么要用int main()呢,如果这样用有什么好处?
让它返回一个整型值这样有什么好处呢....

我来回复

您尚未登录,请登录后再回复。点此登录或注册