#include<iostream.h> #include <stdlib.h> #include <stdio.h> typedef struct LNode{ int data; struct LNode *next; }LNode,*Linklist; int InitList(Linklist&L){ L = new LNode; if (!L) return 1; else L->next = 0; return 0; } int ListInsert(Linklist&L, int i, int e) { // 在带头结点的单链线性表L的第i个元素之前插入元素e Linklist p,s; p = L; int j = 0; while (p && j < i-1) { // 寻找第i-1个结点 p = p->next; ++j; } if (!p || j > i-1) return 1; // i小于1或者大于表长 s = (Linklist)malloc(sizeof(LNode)); // 生成新结点 s->data = e; s->next = p->next; // 插入L中 p->next = s; return 0; } int ListDelete(Linklist&L, int i, int&e) { // 在带头结点的单链线性表L中,删除第i个元素,并由e返回其值 Linklist p,q; p = L; int j = 0; while (p->next && j < i-1) { // 寻找第i个结点,并令p指向其前趋 p = p->next; ++j; } if (!(p->next) || j > i-1) return 1; // 删除位置不合理 q = p->next; p->next = q->next; // 删除并释放结点 e = q->data; free(q); return 0; } // ListDelete_L int Traverse(Linklist L){ Linklist p = L->next; while(p){ cout<<p->data<<" "; p = p->next; } return 0; } void main(){ Linklist La; InitList(La); int a[6] = {1,4,8,3,6,0}; for(int i=1;i<7;i++){ ListInsert(La, i, a[i-1]); //插入 } cout<<"La:"; Traverse(La); cout<<endl; int m; //删除 ListDelete(La, 3, m); cout<<"删除元素后La:"; Traverse(La); cout<<"删除元素为:"<<m<<endl; }
原文:http://www.cnblogs.com/123lele/p/4907099.html