zoukankan      html  css  js  c++  java
  • 单链表的相关操作

      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 typedef int ElemType;
      4 typedef struct LNode{
      5     ElemType data;
      6     struct LNode *next;
      7 }LNode,*LinkList;
      8 //头插法新建链表
      9 LinkList CreatList1(LinkList &L)
     10 {
     11     LNode *s;int x;
     12     //带头节点的链表
     13     L=(LinkList)malloc(sizeof(LNode));
     14     L->next=NULL;
     15     scanf("%d",&x);
     16     while(x!=9999){
     17         s=(LNode*)malloc(sizeof(LNode));
     18         s->data=x;
     19         s->next=L->next;
     20         L->next=s;
     21         scanf("%d",&x);
     22     }
     23     return L;
     24 }
     25 //尾插法新建链表
     26 LinkList CreatList2(LinkList &L)
     27 {
     28     int x;
     29     L=(LinkList)malloc(sizeof(LNode));//带头节点的链表
     30     LNode *s,*r=L;
     31     scanf("%d",&x);
     32     while(x!=9999){
     33         s=(LNode*)malloc(sizeof(LNode));
     34         s->data=x;
     35         r->next=s;
     36         r=s;//r指向新的表尾结点
     37         scanf("%d",&x);
     38     }
     39     r->next=NULL;
     40     return L;
     41 }
     42 //按序号查找结点值
     43 LNode *GetElem(LinkList L,int i)
     44 {
     45     int j=1;
     46     LNode *p=L->next;
     47     if(i==0) return L;
     48     if(i<1)    return NULL;
     49     while(p&&j<i){
     50         p=p->next;
     51         j++;
     52     }
     53     return p;
     54 }
     55 //按值查找
     56 LNode *LocateElem(LinkList L,ElemType e)
     57 {
     58     LNode *p=L->next;
     59     while(p!=NULL&&p->data!=e){
     60         p=p->next;
     61     }
     62     return p;
     63 }
     64 //新结点插入第i个位置
     65 bool ListFrontInsert(LinkList L,int i,ElemType e)
     66 {
     67     LinkList p=GetElem(L,i-1);
     68     if(NULL==p) return false;
     69     //为新插入的结点申请空间
     70     LinkList s=(LNode*)malloc(sizeof(LNode));
     71     s->data=e;
     72     s->next=p->next;
     73     p->next=s;
     74     return true;
     75 }
     76 //删除第i个结点
     77 bool ListDelete(LinkList L,int i)
     78 {
     79     LinkList p=GetElem(L,i-1);
     80     if(p==NULL) return false;
     81     LinkList q;
     82     q=p->next;
     83     p->next=q->next;
     84     free(q);
     85     return true;
     86 }
     87 //打印链表中每个结点的值
     88 void PrintList(LinkList L)
     89 {
     90     L=L->next;
     91     while(L!=NULL){
     92         printf("%3d",L->data);
     93         L=L->next;
     94     }
     95     printf("
    ");
     96 }
     97 int main()
     98 {
     99     LinkList L;
    100     LinkList search;
    101     //头插法新建链表,输入数据可以为3 4 5 6 7 9999
    102     //CreatList1(L);
    103     //尾插法新建链表,输入数据可以为3 4 5 6 7 9999
    104     CreatList2(L);
    105     PrintList(L);
    106     search=GetElem(L,2);
    107     if(search!=NULL){
    108         printf("按序号查找成功
    ");
    109         printf("%3d
    ",search->data);
    110     }
    111     search=LocateElem(L,6);
    112     if(search!=NULL){
    113         printf("按值查找成功
    ");
    114         printf("%3d
    ",search->data);
    115     }
    116     ListFrontInsert(L,2,99);
    117     PrintList(L);
    118     ListDelete(L,4);
    119     printf("删除第四个结点成功
    ");
    120     PrintList(L);
    121     system("pause");
    122 }
  • 相关阅读:
    tensorflow目标检测API安装及测试
    转 fine-tuning (微调)
    在Keras中导入测试数据的方法
    转 Keras 保存与加载网络模型
    Keras预训练模型下载后保存路径
    软件工程----心得体会
    结对编程项目-四则运算
    PSP记录个人项目耗时情况
    代码复审
    代码规范
  • 原文地址:https://www.cnblogs.com/shixinzei/p/12539309.html
Copyright © 2011-2022 走看看