首页 > 代码库 > C语言----------链表的简单操作

C语言----------链表的简单操作

#include <stdio.h>
#include <malloc.h>

typedef struct node{ //定义节点类型
    char data; //数据域
    struct node *next; //指针域
}linklist;
linklist* Create(){ //创建链表
    char key;
    linklist *phead; //头指针
    linklist *pnew; //新节点
    linklist *pend; //尾指针
    phead = (linklist*)malloc(sizeof(linklist));
    pend = phead;
    puts("请输入你要创建的链表,以$结束");
    key=getchar();
    while(key!=$){
        pnew = (linklist*)malloc(sizeof(linklist));
        pnew ->data =http://www.mamicode.com/ key;
        pend ->next = pnew; //新节点插入表尾
        pend=pnew; //尾指针指向新表尾
        key=getchar();
    }
    pend->next = NULL; //将尾节点指向的下一节点设置为空
    return phead; //返回头指针
}
linklist* Get(linklist* phead,int pos){ //查找第pos个的节点
    int cur = 0; //扫描器
    linklist *p;
    p = phead; //指向头节点
    while((p->next!=NULL)&&(cur<pos)){ //不合法或到达尾部则退出
        p = p->next;
        cur++;
    }
    if(cur==pos){
        return p;
    }else{
        return NULL;
    }
}
void Print(linklist *phead){ //打印链表
    linklist *p = phead->next;
    while(p!=NULL){
        printf("%c",p->data);
        p=p->next;
    }
    puts("");
}
int main(void){
    linklist* phead =  Create();
    Print(phead);
    int pos;
    puts("请输入你要查找的位置");
    scanf("%d",&pos);
    linklist* pfind = Get(phead,pos);
    if(pfind !=NULL)
    printf("%c",pfind->data);
    else
    puts("输入错误!");
    return 0;
}

 

C语言----------链表的简单操作