急急急!!!!!!! c语言数据结构单链表的创建,插入,删除结点,定位,取值,求表长,清空,输出。

如题所述

#include<stdio.h>
struct Link
{
    int x;
    struct Link * next;
} node;
int len = -1;  //现在单链表的总长度
struct Link *Init(void) //创建
{
    struct Link *L = (struct Link *)malloc(sizeof(struct Link));
    L->next = NULL;
    return L;
}

void Insert(struct Link *head, int n)    //插入
{
    struct Link *pnew = Init(), *L = head, *P = L;
    if(n >= len)
    {
        while(L->next != NULL)
            L = L->next;
        L->next = pnew;
    }
    else
    {
        while(n--)
        {
            P = L;
            L = L->next;
        }
        P->next = pnew;
        pnew->next = L;
    }
    scanf("%d", &pnew->x);
    len++;
    return ;
}

void Delete(struct Link *head, int n)   //删除
{
    struct Link *L = head, *P = L;
    while(n--)
    {
        P = L;
        L = L->next;
    }
    P->next = L->next;
    len--;
    return;
}

void Position(struct Link *head, int value) //定位
{
    struct Link *L = head;
    int index = 0;
    while(L->x != value && L->next != NULL)
    {
        index++;
        L = L->next;
    }
    printf("在第%d个节点\n", index);
    return;
}

void Value(struct Link *head, int index)   //取值
{
    printf("第%d个位置的数是:", index);
    struct Link *L = head;
    while(L->next != NULL && index--)
        L = L->next;
    printf("%d\n", L->x);
    return;
}

void Len(void)  //表长
{
    printf("表长 = %d\n", len);
    return;
}

void Clear(struct Link *head)   //清空
{
    free(head);
    return;
}

void Print(struct Link *head)   //输出
{
    struct Link *L = head->next;
    while(L -> next != NULL)
    {
        printf("%d ", L->x);
        L = L->next;
    }
    return;
}

int main(void)
{
    struct Link *head;
    head = Init();
    int i = 0;
    for(i = 0; i < 10; i++)
    {
        printf("输入第%d个数:", i + 1);
        Insert(head, i);
    }

    Delete(head, len);

    printf("输入要查询的值:");
    scanf("%d", &i);
    Position(head, i);

    Value(head, 7);

    Len();

    Print(head);

    Clear(head);
    return 0;
}

追问

能不能再给个顺序表,也是一样的题目

追答

线性表:

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-11

这是我写的两个代码,你可以下载下来,如果有什么问题可以直接找我

追问

为什么里面没有东西啊

追答

有啊。有两个文件,一个是用链表做的,另外一个是用线性表做的

追问

没有啊,你能不能帮我写个,真的很急,不写完不能回家的说

第2个回答  2014-01-11
bool Insert(int i,Tx)
bool update(int i,Tx)
void clear()
int Length()
Int search(T x)
void output()
bool IsEmpty()

c语言数据结构单链表的初始化 插入 销毁 元素的取出 删除 操作 求详细C...
include <stdlib.h> typedef struct node { int nDate;struct node *pstnext;}Node;\/\/链表输出 void output(Node *head){ Node *p = head->pstnext;while(NULL != p){ printf("%d ", p->nDate);p = p->pstnext;} printf("\\r\\n");} \/\/链表建立 Node* creat(){ Node *head ...

实现单链表的建立、清空、插入、删除查找、修改等运算。用数据结构...
LNode *creat_head();\/\/创建一个空表 void creat_list(LNode *,int);\/\/创建一个长度为n的线性链表 void insert_list(LNode *,int,int );\/\/插入一个元素 int delete_list(LNode *,int);\/\/删除一个元素 \/\/创建一个空链表 LNode *creat_head(){ LNode *p;p=(Llist)malloc(sizeof(...

...法建立带头结点的单链表,实现单链表上的插入,删除计数,查找,修改,输...
\/* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L) *\/ \/* 操作结果:用e返回L中第i个数据元素的值 *\/ Status GetElem(LinkList L,int i,ElemType *e){ int j;LinkList p; \/* 声明一结点p *\/ p = L->next; \/* 让p指向链表L的第一个结点 *\/ j = 1; \/* j为计数...

数据结构代码(用C语言) 单链表的插入和删除
include <stdio.h> include <stdlib.h> typedef struct node { int nDate;struct node *pstnext;}Node;\/\/链表输出 void output(Node *head){ Node *p = head->pstnext;while(NULL != p){ printf("%d ", p->nDate);p = p->pstnext;} printf("\\r\\n");} \/\/链表建立 Node* crea...

用C语言编写链式存储结构下实现线性表的创建,插入,删除,按值查找
typedef struct LNode{ int data;\/\/链表数据 struct LNode* next;\/\/链表指针 }LNode,*LinkList;\/*头插法-建立单链表*\/ LinkList HeadCreate(LinkList la){ int num;la=(LinkList)malloc(sizeof(LNode));\/\/建立头结点 la->next=NULL;scanf("%d",&num);while(num!=10){ LNode *p=(...

如何用C语言创建一个链表,实现增、删、改、查?
\/\/1、写出建立一个带头结点的线性链表的函数,其中每个结点包括学号、姓名、分数三个数据域。函数形式如下:NODE *creat_link(int direction){ NODE *head,*p,*tail;int xh,i=1;if(direction==1) \/\/当direction的值为1时,新建立的结点连到尾部 { tail=head=(NODE *)malloc(sizeof(NODE));h...

...求表长、取元素、按值查找、单链表的插入、删除、遍历访
return 0;q=p->next;p->next=q->next;e=q->a;free(q);} void main(){ int e,i,n;List l1;struct node *p;printf("请输入要创建链表的大小:\\n");scanf("%d",&n);printf("请向链表中输入%d个整型数据:\\n",n);createList(l1,n);printf("当前链表为:\\n");...

c数据结构 实现单链表的创建、插入、删除、打印和查询
cout<<"请输入一串单字符数据,以*结束!"<<endl;char ch;link *HEAD;link *R,*P,*L;HEAD=(link *)malloc(sizeof(link));HEAD->next=NULL;R=HEAD;getchar();ch=getchar();while(ch!='*'){ P=(link *)malloc(sizeof(link));P->data=ch;P->next=NULL;R->next=P;R=R->next...

你好,数据结构(C语言)中实现有序链表的插入,删除结点基本操作,及两个有...
void creat(); \/\/建立单向动态链表。此函数带回一个指向链表头的指针,用于参赛选手的录入void del(); \/\/用于删除结点,用于参赛选手的删除void search(); \/\/参赛选手成绩的查询void print(); \/\/用于输出链表void rank(); \/\/按个人平均成绩从高到低的顺序进行排序void update(); \/\/参赛选手的修改void menu...

数据结构作业~急求~~~用c语言或c++ 使用单链表实现系统进程列表,完成...
1、数据域:用来存储本身数据 2、链域或称为指针域:用来存储下一个结点地址或者说指向其直接后继的指针。例:typedef strUCt node { char name[20];struct node *link;}stud;这样就定义了一个单链表的结构,其中char name[20]是一个用来存储姓名的字符型数组,指针*link是一个用来存储其直接后继...

相似回答