链表

整理一下链表的创建、查找节点、插入节点、删除节点。。。做了一个应用实例

代码:

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct node
{
    char data;
    struct node *next;
}LinkList;

LinkList* LinkListCreat()
{
    char ch;
    LinkList *p,*p1,*p2;
    p=(LinkList *)malloc(sizeof(LinkList));
    p->data='\0';
    p->next=NULL;
    p1=p;
    while((ch=getchar())!='\n')
    {
        p2=(LinkList *)malloc(sizeof(LinkList));
        p2->data=ch;
        p2->next=NULL;
        p1->next=p2;
        p1=p2;
    }
    return p;
}
LinkList* ElemLocatedbyNum(LinkList *p,int n)
{
     int i=1;
     LinkList *q;
     q=p;
     while(q!=NULL)
     {
         if(n==i)
           return q;
         i++;
         q=q->next;
     }
     return NULL;
}
int LinkListInsert(LinkList *p,int n,char ch)
{
      LinkList *p1,*p2;
      p1=ElemLocatedbyNum(p,n-1);
      if(p1==NULL)
      {
           printf("error\n");
           return -1;
      }
      p2=(LinkList*)malloc(sizeof(LinkList));
      p2->data=ch;
      p2->next=p1->next;
      p1->next=p2;
      return 0;
}
int LinkListDelete(LinkList *p,int n)
{
    LinkList *p1,*p2;
    p1=ElemLocatedbyNum(p,n-1);
    if(p1==NULL)
    {
           printf("error!\n");
           return -1;
    }
    p2=p1->next;
    p1->next=p2->next;
    free(p2);
    return 0;
}
int main()
{
    LinkList *p,*q;
    p=LinkListCreat();
    q=p->next;
    printf("element:\n");
    while(q)
    {
           printf("%c ",q->data);
           q=q->next;
    }
    printf("\n");
    LinkListInsert(p,10,'T');
    q=p->next;
    printf("element:\n");
    while(q)
    {
           printf("%c ",q->data);
           q=q->next;
    }
    printf("\n");
    LinkListDelete(p,4);
    q=p->next;
    printf("element:\n");
    while(q)
    {
           printf("%c ",q->data);
           q=q->next;
    }
    return 0;
}
运行结果:

感想:再也不买盗版的书籍了。。害得我修改了一个多小时查找节点的那个函数竟然印错了难过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值