1 #include<stdio.h> 2 #include<stdlib.h> 3 #define OK 1 4 #define error -1 5 typedef struct LNode 6 { 7 int data; 8 struct LNode *next; 9 }LNode,*LinkList; 10 LinkList CreateList(int n) 11 { 12 LinkList L,p,s; 13 int i; 14 L=(LinkList)malloc(sizeof(LNode)); 15 L->next=NULL;L->data=n; 16 s=L; 17 printf("请输入链表元素:\n"); 18 for(i=0;i<n;i++) 19 { 20 p=(LinkList)malloc(sizeof(LNode)); 21 scanf("%d",&p->data); 22 s->next=p; 23 s=s->next; 24 p->next=NULL;//正序输入 25 } 26 return L; 27 } 28 int GetElem(LinkList L,int i,int &e) 29 { 30 LinkList p; 31 int j; 32 p=L->next;j=1; 33 while(p&&j<i) 34 { p=p->next;++j;} 35 if(!p||j>i) return error; 36 e=p->data; 37 return OK; 38 } 39 int ListInsert(LinkList &L,int i,int e) 40 { 41 LinkList p,s; 42 int j=0; 43 p=L; 44 if(i<1&&i>L->data) return error; 45 while(--i) p=p->next; 46 s=(LinkList)malloc(sizeof(LNode)); 47 s->data=e;s->next=p->next; 48 p->next=s; 49 return OK; 50 } 51 int ListDelete(LinkList &L,int i,int &e) 52 { 53 LinkList p,q; 54 p=L; 55 if(i<1&&i>L->data) return error; 56 while(--i) p=p->next; 57 q=p->next; p->next=q->next; 58 e=q->data; free(q); 59 return OK; 60 } 61 int printlist(LinkList La) 62 { 63 LinkList p=La; 64 printf("\n链表元素为:"); 65 printf("\n********************\n\n"); 66 while(p->next) 67 { 68 p=p->next; 69 printf("%d ",p->data); 70 } 71 printf("\n********************\n"); 72 return OK; 73 } 74 int main() 75 { 76 LinkList head;//存放链表首地址 77 int i,m,n; 78 printf("请输入链表的长度:\n"); 79 scanf("%d",&n); 80 head=CreateList(n); 81 printlist(head); 82 printf("请输入你要查找元素的位置:\n"); 83 scanf("%d",&i); 84 GetElem(head,i,m); 85 printf("你所查找的第%d个元素为:%d\n",i,m); 86 printf("请输入你要插入的元素的位置和数值:\n"); 87 scanf("%d%d",&i,&m); 88 ListInsert(head,i,m); 89 printlist(head); 90 printf("请输入你要删除元素的位置:\n"); 91 scanf("%d",&i); 92 ListDelete(head,i,m); 93 printf("你所删除的元素为:%d\n",m); 94 printlist(head); 95 system("pause"); 96 return OK; 97 }
转载于:https://www.cnblogs.com/mycapple/archive/2012/08/03/2620921.html