单向链表的基本操作

    xiaoxiao2021-03-25  55

    #include <stdio.h> #include <stdlib.h> struct Node; typedef struct Node *PtrToNode; typedef PtrToNode List; typedef PtrToNode Position; // 定义Node元素类型 typedef  int ElementType; typedef struct Node { ElementType Element; Position Next; }Node; List CreateList(List L,int n){ int i=0; List p; L = (List)malloc(sizeof(Node)); L->Next = NULL; for(i =0 ;i<n;i++){ p = (List)malloc(sizeof(Node)); p->Element = i; p->Next = L->Next; L->Next = p; } return L; } int GetElement(List L,int i){ List p; p = L->Next; int j=0; while(p&&j<i){ p = p->Next; j++; } if(!p||j>i)return 0; return p->Element; } int  ListInsert(List L,int i, ElementType e){ List p; p = L; int j=0; while(j<i&&p){ p = p->Next; j++; } List p1 = (List)malloc(sizeof(Node)); p1->Element = e; p1->Next = p->Next; p->Next = p1; return 0; } int  ListDelete(List L,int i){ List p; p = L; int j=0; while(j<i&&p){ p = p->Next; j++; } List delp; delp = p->Next; p->Next = delp->Next; free(delp); delp->Next = NULL; return 1; } void ListShow(List L){ List p; p = L->Next; while(p->Next!=NULL){ printf("%d\n",p->Element); p = p->Next; } } int  main(){ List L; L = CreateList(L,10); printf("%p\n", L->Next); List p; p = L->Next; while(p->Next!=NULL){ printf("%d\n",p->Element); p = p->Next; } // 获取某个位置的值; int result; result = GetElement(L,3); printf("%d\n",result); // 插入某个值 result = ListInsert(L,1,100); p = L->Next; while(p->Next!=NULL){ printf("%d\n",p->Element); p = p->Next; } // 删除某个位置的值 result = ListDelete(L,1); ListShow(L); return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-37523.html

    最新回复(0)