线性表之链式存储结构

来源:互联网 发布:童装行业数据 编辑:程序博客网 时间:2024/05/22 12:43

下面代码为单链表的一些基本操作:

#include <iostream>using namespace std;typedef int ElemType;typedef struct Lnode{ElemType data;struct Lnode *next;}*LinkList;//逆序建立链表LinkList ReCreateLinkList(LinkList &L){int n = 0;cout<<"请输入要创建的元素的个数n:"<<endl;cin>>n;char str[100];sprintf(str,"请输入%d个元素\n",n);cout<<str<<endl;int elem;L = (LinkList)malloc(sizeof(Lnode));L->next = NULL;for(int i=0;i<n;i++){cin>>elem;LinkList p = (LinkList)malloc(sizeof(Lnode));p->data = elem;p->next = L->next;L->next = p;}cout<<"L = "<<L<<endl;return L;}/*顺序实现链表--思路一定要清晰*/LinkList CreateLinkList(LinkList &head){int n = 0;cout<<"请输入要创建的元素的个数n:"<<endl;cin>>n;char str[100];sprintf(str,"请输入%d个元素\n",n);cout<<str<<endl;int elem;head = (LinkList)malloc(sizeof(Lnode));head->next = NULL;LinkList L = head;for(int i=0;i<n;i++){cin>>elem;LinkList p = (LinkList)malloc(sizeof(Lnode));p->data = elem;p->next = NULL;L->next = p;L = p;}return head;}//另一种实现方式,C++程序设计语言提示:这种方法是错误的,指针作为局部变量返回//上面的注释是错误的,可以返回局部指针变量的值,值可以为地址。但是不可以返回局部变量的地址。刚刚理解这句话:-DLinkList createLinkListAnthor(LinkList &L){//LinkList head;head = (LinkList)malloc(sizeof(Lnode));L = head;int n = 0;cout<<"请输入要创建的元素的个数n:"<<endl;cin>>n;char str[100];sprintf(str,"请输入%d个元素\n",n);cout<<str<<endl;int elem = 0;for(int i=0;i<n;i++){cin>>elem;LinkList p = (LinkList)malloc(sizeof(Lnode));p->data = elem;p->next = NULL;L->next = p;L = p;}return head;}//查找倒数第K个结点的值ElemType findValue(LinkList &L,int k){LinkList p = L;for(int i=0;i<k-1;i++){p = p->next;}while(p->next != NULL){p = p->next;L = L->next;}return L->data;}//求链表中的最大值LinkList findMax(LinkList L){LinkList p = L->next;L = p;int max = p->data;while(L != NULL){if(L->data > max){max = L->data;p = L;}L = L->next;}return p;}//求链表中的最小值LinkList findMin(LinkList L){LinkList p = L->next;L = p;int min = p->data;while(L != NULL){if(L->data < min){min = L->data;p = L;}L = L->next;}return p;}LinkList insertLinkList(LinkList &L,int i,int value){LinkList Head = L;int k = 0;while(k < i){Head = Head->next;k++;}LinkList p = (LinkList)malloc(sizeof(Lnode));p->data = value;p->next = Head->next;Head->next = p;return L;}LinkList deleteLinkList(LinkList &L,LinkList p){while(L->next != p){L = L->next;}if(L->next == p){L->next = p->next;delete p;}return L;}LinkList deleteLinkList(LinkList &L,int location){LinkList Head = L;int k = 0;while(k < location){Head = Head->next;k++;}/*LinkList p = Head->next;cout<<p->data<<" "<<p->next->data<<endl;Head->next = p->next;delete p;*//*好好注意 内存问题*/cout<<Head->next->data<<" "<<Head->next->next->data<<endl;Head->next = Head->next->next;return L;}void print(LinkList L){while(L->next != NULL){cout<<L->next->data<<"";L = L->next;}cout<<endl;}void main(){/*LinkList L;LinkList L1 = ReCreateLinkList(L);print(L1);LinkList L2;LinkList L3 = CreateLinkList(L2);print(L3); */ LinkList L4;L4 = createLinkListAnthor(L4);print(L4);insertLinkList(L4,4,100);print(L4);deleteLinkList(L4,2);print(L4);}


原创粉丝点击