每天一段小代码——链表
2013-08-16 19:41
197 查看
#include<iostream> using namespace std; typedef struct Lnode{ int data; struct Lnode *next; }*LinkList; void CreatList(LinkList &L,int n) { int a; LinkList s; L=(LinkList)malloc(sizeof(Lnode)); L->next=NULL; for(int i=0;i<n;i++) { s=(LinkList)malloc(sizeof(Lnode)); scanf("%d",&a); s->data=a; s->next=L->next;L->next=s; } } int LocateList(LinkList &L,int i) { LinkList p=L->next; int j=1, e; while(p&&j<i) {p=p->next;j++;} e=p->data; return e; } //尾插 void R_InsertList(LinkList &L,int e) { LinkList p=L; while(p->next) p=p->next; LinkList s=(LinkList)malloc(sizeof(Lnode)); s->data=e; s->next=NULL; p->next=s; } //头插 void H_InsertList(LinkList &L,int e) { LinkList s=(LinkList)malloc(sizeof(Lnode)); s->data=e; s->next=L->next; L->next=s; } void InsertList(LinkList &L,int i,int e) { LinkList p=L; int j=0; while(p&&j<i-1){p=p->next;j++;} LinkList s=(LinkList)malloc(sizeof(Lnode)); s->data=e; s->next=p->next; p->next=s; } void DeletList(LinkList &L,int i) { LinkList p=L; int j=0; while(p->next&&j<i-1) {p=p->next;j++;} p->next=p->next->next; } void ShowElem(LinkList L) { for(LinkList p=L->next;p!=NULL;p=p->next) cout<<p->data<<" "; } int main() { LinkList L; CreatList(L,4); ShowElem(L); cout<<endl; R_InsertList(L,7); ShowElem(L); cout<<endl; H_InsertList(L,1); ShowElem(L); cout<<endl; InsertList(L,1,1); ShowElem(L); cout<<endl; DeletList(L,1); ShowElem(L); cout<<endl; cout<<LocateList(L,2); system("pause"); }这个代码的重点是一·LocateList()函数的指针的指向,和Insert()函数,Del()函数的指针的指向区别;二 上述几个函数中,while()中的条件的判断,比如insert是p , del是p->next