链表及其简单操作

来源:互联网 发布:mac终端登录服务器 编辑:程序博客网 时间:2024/05/17 05:16
#include<stdio.h>#include<malloc.h>#define ERROR 0#define OK 1#define ElemType inttypedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;int CreateLink_L(LinkList &L,int n){  LinkList p,q;  int i;  ElemType e;  L = (LinkList)malloc(sizeof(LNode));  L->next = NULL;  q = (LinkList)malloc(sizeof(LNode));  q = L;  for (i=0; i<n; i++) {     scanf("%d", &e);    p = (LinkList)malloc(sizeof(LNode));    p->data=e;    q->next=p;    q=p;  }p->next=NULL;   return OK;}int LoadLink_L(LinkList &L){ LinkList p = L->next; if(p==NULL)printf("The List is empty!"); else {     printf("The LinkList is:");     while(p!=NULL)     {        printf("%d ",p->data);        p=p->next;     } } printf("\n"); return OK;}int LinkInsert_L(LinkList &L,int i,ElemType e){  LinkList p,s;  p=L;  int j=0;  while (p!=NULL&&j<i-1) {++j;p=p->next;}  if (p==NULL||j>i-1) return ERROR;  s=(LinkList) malloc (sizeof(LNode));  s->data=e;  s->next=NULL;  s->next=p->next;  p->next=s;  return OK;}int LinkDelete_L(LinkList &L,int i,ElemType &e){  LinkList p,q;  p=L;  int j=0;  while (p->next&&j<i-1) {++j;p=p->next;}  if (!(p->next)||j>i-1) return ERROR;  q=p->next;  e=q->data;  p->next=q->next;  free(q);  return OK;}int main(){ LinkList T; int a,n,i; ElemType x,e; printf("Please input the init size of the linklist:\n"); scanf("%d",&n); printf("Please input the %d element of the linklist:\n", n); if(CreateLink_L(T,n)) {     printf("A Link List Has Created.\n");     LoadLink_L(T); } while(1)    {        printf("1:Insert element\n2:Delete element\n3:Load all elements\n0:Exit\nPlease choose:\n");        scanf("%d",&a);        switch(a)        {            case 1: scanf("%d%d",&i,&x);                  if(!LinkInsert_L(T,i,x)) printf("Insert Error!\n");                  else printf("The Element %d is Successfully Inserted!\n", x);                  break;            case 2: scanf("%d",&i);                  if(!LinkDelete_L(T,i,e)) printf("Delete Error!\n");                  else printf("The Element %d is Successfully Deleted!\n", e);                  break;            case 3: LoadLink_L(T);                  break;            case 0: return 1;        }    }}
0 0
原创粉丝点击