jmu-ds-单链表的基本运算

来源:互联网 发布:gta5ol捏脸美女数据 编辑:程序博客网 时间:2024/05/16 05:53

实现单链表的基本运算:初始化、插入、删除、求表的长度、判空、释放。

一行是尾插法需要插入的字符数据的个数,第二行是具体插入的字符数据。

(3)输出单链表L;

(4)输出单链表L的长度;

(5)判断单链表L是否为空;

(6)输出单链表L的第3个元素;

(7)输出元素a的位置;

(8)在第4个元素位置上插入‘x’元素;

(9)输出单链表L;

(10)删除L的第3个元素;

(11)输出单链表L;

(12)释放单链表L。

输入格式:

两行数据,第一行是尾插法需要插入的字符数据的个数,第二行是具体插入的字符数据。

输出格式:

按照题目要求输出

输入样例:

5

a b c d e

输出样例:

0

a b c d e

5

no

c

1

a b c x d e

a b x d e


分析:坑,输入数据之间有空格,输出数据之间有空格,再这里卡死了好几天抓狂,其他都很基础

#include <stdio.h>#include <malloc.h>#include <stdlib.h>#define TRUE      1#define FALSE     0#define OK        1#define ERROR     0#define INFRASIBLE -1#define COERFLOW  -2typedef int Status;typedef char ElemType;typedef struct LNode{    ElemType data;    struct LNode *next;}LNode,*LinkList;Status InitList_L(LinkList &L){    L = (LNode *)malloc(sizeof(LNode));    L -> next = NULL;    printf("%d\n",L -> next);    return OK;}Status CreateList_L(LinkList &L,char str[],int n){    int i;    L=(LinkList )malloc(sizeof(LNode));    LinkList tail = L;//尾指针    for(i = 0; i < n; i++)    {        LNode *p;        p = (LNode *)malloc(sizeof(LNode));        if(p == NULL)            return FALSE;        p -> data = str[i];        p -> next = NULL;        tail -> next = p;        tail = tail -> next;    }    return OK;}void PrintList_L(LinkList &L){    printf("%c",L -> next -> data);    LNode *p = L -> next -> next;    while(p != NULL)    {        printf(" %c",p -> data);        p = p -> next;    }}void LengthList_L(LinkList &L){    int count = 0;    LNode *p = L -> next;    while(p != NULL)    {        count++;        p = p -> next;    }    printf("%d\n",count);}void If_emptyLIst_L(LinkList &L){    LNode *p = L -> next;    if(p == NULL)        printf("yes\n");    else        printf("no\n");}void Print3List_L(LinkList &L){    int j = 1;    LNode *p = L -> next;    while(p && j < 3)    {        ++j;        p = p -> next;    }    if(p == NULL)        printf("NOT FOUND\n");    else        printf("%c\n",p -> data);}Status PrintaList_L(LinkList &L){    LNode *p = L -> next;    int j = 1;    while(p && p -> data != 'a')    {        j++;        p = p -> next;    }    if(p == NULL)        return FALSE;    printf("%d\n",j);}Status Insert4List_L(LinkList &L){    int j = 1;    LNode *p = L -> next;    while(p && j < 3)    {        j++;        p = p -> next;    }    if(p == NULL)        return FALSE;    LNode *q;    q = (LNode *)malloc(sizeof(LNode));    q -> next = p -> next;    q -> data = 'x';    p -> next = q;    return OK;}Status Delete3List_L(LinkList &L){    int j = 1;    LNode *p = L -> next;    while(p && j < 2)    {        j++;        p = p -> next;    }    if(p == NULL)        return FALSE;    LNode *q;    q = p -> next;    p -> next = q -> next;    free(q);    return OK;}int main(){    int n,i;    scanf("%d",&n);    char c;    char str[100];    for(i = 0; i < n; i++)        scanf("%s",&str[i]);    LinkList L;    InitList_L(L);    CreateList_L(L,str,n);    PrintList_L(L);    printf("\n");    LengthList_L(L);    If_emptyLIst_L(L);    Print3List_L(L);    PrintaList_L(L);    Insert4List_L(L);    PrintList_L(L);    printf("\n");    Delete3List_L(L);    PrintList_L(L);}



原创粉丝点击