单链表(线性链表)操作

来源:互联网 发布:class c语言 编辑:程序博客网 时间:2024/06/17 03:57

建立List结构

#include <cstdio>#include <iostream>#include <malloc.h>using namespace std;typedef struct Node{    int data;    struct Node *next;  //next指针    int size;           //单链表大小}*List;

尾插入法建立单链表

void Creat(List &L,int n){    L = (List)malloc(sizeof(List));    L->size = 0;    Node *p = L,*q;    for(int i=0;i<n;i++){        q = (List)malloc(sizeof(List));        cin>>q->data;        p->next = q;       //将p的next指向q n=0时即L->next = q        p = q;             //将p向后移动至q  n=0时即p = L->next        L->size++;    }    p->next = NULL;        //p->next总为空}

删除指定位置的元素

void Delete(List &L,int num){    List p = L;    for(int i=0;i<num-1;i++){   //找到要删除的前一个位置        p = p->next;          }    List q = p->next;           //声明要删除的元素q    p->next = q->next;          //q的后继成为p的后继 即删除q    free(q);    L->size--;}

在num位置插入值为val的元素

void Insert(List &L,int val,int num){    List p = L;    for(int i=0;i<num-1;i++){   //找到要插入的前一个位置        p = p->next;    }    List q = (List)malloc(sizeof(List));    q->data = val;    q->next = p->next;          //使插入位置前一个元素p的后继成为插入元素q的后继    p->next = q;                //插入元素q    L->size++;}

取得num位置的元素的值

int GetElem(List &L,int num){    List p = L;    for(int i=0;i<num;i++){   //找到要取得的位置        p = p->next;    }    return p->data;}

输出单链表

void Show(List &L){    List p = L->next;    for(int i=0;i<L->size;i++){        cout<<p->data<<" ";        p = p->next;    }    cout<<endl;}
0 0
原创粉丝点击