请大家帮帮忙

来源:互联网 发布:远程控制软件 mac 编辑:程序博客网 时间:2024/05/01 09:15

小妹初来乍到,对c了解的太少,希望各位大侠们能帮帮我解决一下问题。。。。。运行时会产生很多错误呢,在此先谢过大家

#include<stdlib.h>
#include<stdio.h>
#define error 0;
#define ok 1;

typedef int ElemType;
typedef int status;

typedef struct LNode
{
 ElemType data;
 struct LNode *next;
}*Link;

typedef struct
{
 Link head,tail;
 int len;
}LinkList;


status MakeNode(Link &p, ElemType e)
{
 p = (Link)malloc(sizeof(LNode));
 if(p== NULL)
 {
 return error;
 }
 printf("/n请输入一个结点数据:");
    scanf("%d", &e);
 p->data = e;
 p->next = NULL;
    printf("/n您输入的结点的数据域为:%d/n", p->data);
 return ok;
}


void FreeNode(Link &p)
{
free(p);
p=NULL;
}


status InitList(LinkList &L)
{
 L.head = L.tail = (LNode *)malloc(sizeof(LNode));
 L.len=0;
 return ok;
}

 

status SetCurElem(LinkList &L,Link &p,ElemType e)
{
 int i=1;
 int n=10;
 int a[10];
 InitList(L);
 printf("/n输入数据:");
 for(i=1;i<=10;i++){
 scanf("%d,",&e);
 a[i]=e;
 }
 for(i=1;i<=10;i++){
 p=L.head->next=(LNode*)malloc(sizeof(LNode));
 p->data=a[i];
 printf("%d.p->data=%d./n",i-1,p->data);
 p=p->next;
 }
 return ok;
}

status GetCurElem(Link p)
{
 return(p->data);
}

void CreateList(LinkList &L, Link &q, int i)
{
 L.head = L.tail=(LNode *)malloc(sizeof(LNode));
 L.head->next = NULL;
 q=L.head;
 int n=10;
 printf("请输入一个有10个结点的链表:");
 for(i=n; i>0; i--)
 {
  q = (LNode*)malloc(sizeof(LNode));
  scanf("%d,", &q->data);
  q->next = L.head->next;
  L.head->next = q;
 }
 q=L.head->next;
 printf("/n");
 printf("您输入的链表为:");
 for(i=1; i <= 10; i++)
 {
  printf("%d,", q->data);
  q = q->next;
 }
 printf("/n");
 L.tail = q;
}

status  InsList(LinkList &L, Link h,Link s)
{   int e;
// h = L.head;
 s = (LNode*)malloc(sizeof(LNode));
 printf("/n请输入您要插入的数据:");
 scanf("%d",&e);
 s->data = e;
 s->next = L.head->next;
 L.head->next = s;
 printf("/n您要插入的结点为:%d", s->data);
 return ok;
}

status ClearList(linkList &L)

 if(!L.len) return error;
 Link p,q;
 p=q=L.head->next;
 L.head->next=NULL;
 while(p=L.tail)
 {
  p=q->next;
  FreeNode(q);
  q=p;
 }
 L.tail=L.head;
 L.len=0;
    return ok;
}

 



status Delfirst(LinkList &L, Link h, Link q)
{
 h = L.head;
 q = h->next;
 printf("/n您要删除的结点数据为:%d", q->data);
 q->next = q->next->next;
 free(q);
 printf("/n此时的链表变为:");
 while(h->next)
 {
  printf("%d,", h->next->data);
 }
 return ok;
}


status Append(LinkList &L, Link s, Link q)
{
 LinkList M;
 s = (LNode*)malloc(sizeof(LNode));
 s->next = NULL;
 q = s;
 int n = 3;
 int i = 0;
 s = M.head = NULL;
 printf("/n请输入一个新的有3个结点的串:");
 for(i = n; i > 0; i--)
 {
  s = (LNode*)malloc(sizeof(LNode));
  scanf("%d,", &s->data);
  s->next = M.head->next;
  M.head->next = s;
 }
 printf("/n您新输入的串为:");
 s = M.head->next;
 for( i = 1; i <= n; i++)
 {
  printf("%d,", s->data);
  s = s->next;
 }
 s = M.head->next;
 L.tail->next = s;
 s = L.head;
 printf("/n新组成的链表为:");
 while(s->next)
 {
  printf("%d,", s->next->data);
 }
 return ok;
}

void main(void)

 ElemType e = 0;
 int n = 10;
 int i = 1;
 Link p = NULL;
 Link q = NULL;
 Link h = NULL;
 Link s = NULL;
 LinkList L;
    LinkList /*M*/;
MakeNode(p, e);
 FreeNode(p);
CreateList(L, q, i);
    InitList(L);
    ClearList(L);
 SetCurElem(L,p,e);
 GetCurElem(p);
InsList(L, s);
Delfirst(L, h, q);
  Append(L, s, q);
}

原创粉丝点击