您的位置:首页 > 理论基础 > 数据结构算法

数据结构-单链表

2015-02-02 19:56 232 查看
#include<stdio.h>

#include<stdlib.h>

#define LIST_SIZE 100

#define LISTINCREMENT 100

typedef int ElemType;

typedef int Status;

#define OVERFLOW 0

#define OK 1

#define ERROR 0

typedef struct LNode

{

ElemType data; // 数据域

struct LNode *next; // 指针域

}LNode, *LinkList;

LinkList L, p, q, s;

void CreateList_L(LinkList &L, int n)

{ // 逆序输入 n 个数据元素,建立带头结点的单链表

//LinkList p;

L = (LinkList) malloc (sizeof (LNode));

L->next = NULL;

for (int i = n; i > 0; --i)

{

// LinkList p;

p = (LinkList) malloc (sizeof (LNode));

scanf("%d",&p->data);

p->next = L->next;

L->next = p;

}

} // CreateList_L

Status ListInsert_L(LinkList &L, int i, ElemType e)

{

//LinkList q; 

q = L;

int j = 0;   

  while (q && j < i-1)

{

q = q->next;

++j;

} // 寻找第 i-1 个结点

  if (!q || j > i-1) return ERROR;

//LinkList s;

  s = (LinkList)malloc(sizeof(LNode));

  s->data = e;

  s->next = q->next;

q->next = s;

  return OK;

} 

/*

Status ListDelete_L(LinkList &L,int i, ElemType &e)

{

LinkList p;

LinkList q;

p = L;

j = 0;

while ( p->next && j < i-1)

{

p = p->next;

++j;

} // 寻找第 i 个结点,并令 p 指向其前趋

  if (!(p->next) || j>i-1)

return ERROR;

  q = p->next;

p->next = q->next; 

  e = q->data;

free(q);

  return OK;

} // ListDelete_L

*/

int main()

{

int n;

// LinkList L;

while(~scanf("%d",&n))

{

CreateList_L(L, n);

p = L->next;

printf("chu shi biao:\n");

while (p)

{

printf("%d ",p->data );

p = p->next;

}

printf("\n");

printf("Please input where you insert and what:\n");

int ins, siz;

scanf("%d%d",&ins, &siz);

printf("After insert:\n");

ListInsert_L(L, ins, siz);

p = L->next;

while (p)

{

printf("%d ",p->data);

p = p->next;

}

printf("\n");

/*

printf("chu shi biao:\n");

for(i=0;i<L.length;i++)

printf("%d ",L.elem[i]);

printf("\n");

printf("Please input where you insert and what:\n");

int ins, siz;

scanf("%d%d",&ins, &siz);

printf("After insert:\n");

ListInsert_Sq(L, ins, siz);

for(i=0;i<L.length;i++)

printf("%d ",L.elem[i]);

printf("\n");

printf("Please input where you want to delete:\n");

int del;

scanf("%d",&del);

printf("After delete :\n");

int e;

ListDelete_Sq(L, del, e);

printf("%d\n",e);

for(i=0;i<L.length;i++)

printf("%d ",L.elem[i]);

printf("\n");

*/

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: