#include<stdio.h>
#include<string.h>
#include<malloc.h>
int n;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode, *LinkList;
void init_list(LinkList &L)
{
L = (LinkList)malloc(sizeof(LinkList));
L->next = NULL; //初始化一个空链表
}
void create(LinkList &L)
{
LinkList p, last;
int i;
last = L;
for(i=1; i<=n; i++)
{
printf("请输入第%d个结点:", i);
scanf("%d", &last->data);
p = (LinkList)malloc(sizeof(LinkList));
p->next = NULL;
last->next = p;
last = p;
}
printf("线性链表为:\n");
last = L;
for(i=1; i<=n; i++)
{
printf("%d ", last->data);
last = last->next;
}
printf("\n");
}
int ListInsert_L(LinkList &L, int m, int e)
{//在带头结点的单链线性表L中第m个位置之前插入元素e
printf("\n在某位置之前插入1个元素\n输入插入位置:");
scanf("%d", &m);
printf("输入插入元素:");
scanf("%d", &e);
LinkList p, q;
int j; int k;
p = L;
j = 0;
while(p && j<m-2)
{
p = p->next; ++j; //寻找第m-1个结点
}
if(!p||j>m-1) return 0; //m小于1或者大于表长加1
q = (LinkList)malloc(sizeof(LinkList)); //生成新结点
q->data = e; q->next = p->next; //修改后一指针
p->next = q; //修改前一指针
printf("插入元素后的线性链表为:\n");
for(k=1; k<=n+1; k++)
{
printf("%d ", L->data);
L = L->next;
}
printf("\n");
return 1;
}
int ListDelete_L(LinkList &L, int i, int &x)
{//在带头结点的单链线性表L中,删除第i个结点,并由e返回其值
printf("\n请输入要删除的结点位置:");
scanf("%d", &i);
LinkList p, q;
int j; int k;
p = L;
j = 0;
while(p && j<i-2)
{
p = p->next; ++j;
}
if(!p||j>i-1) return 0;
q = (LinkList)malloc(sizeof(LinkList));
q = p->next;
p->next = q->next;
x = q->data;
printf("删除的元素是:%d\n\n", x);
printf("删除元素后的线性链表为:\n");
for(k=1; k<=n; k++)
{
printf("%d ", L->data);
L = L->next;
}
printf("\n");
return 1;
}
void main()
{
LinkList list;
init_list(list);
printf("请输入结点个数:\n");
scanf("%d", &n);
create(list);
int m; int i; int e; int x;
ListInsert_L(list, m, e);
ListDelete_L(list, i, x);
}
用C语言实现线性表的顺序存储(创建,插入,删除和查找)
if(p1==head)\/\/要删除的结点是头结点 { head=p1->next; } else { p2->next=p1->next; } cout<<"成功删除!!"; } p2=p1; p1=p1->next; } return head;}int save_info(char *filename,STUDENT *head,int flag)\/\/功能:将链表按Binary写入文件末尾\/\/参数:\/\/1.filename文件名,绝对地址\/\/2.hea...
用C语言编写链式存储结构下实现线性表的创建,插入,删除,按值查找
\/\/在la链表中的i位置插入数值e int j=1;
用C语言创建一个空线性表,并完成插入删除等基本操作,可就是不知道怎么...
亲,你用的是顺序表的结构体和初始化,其它用的却是链表的操作,建议多看看数据结构的书。
c语言 链表操作:建立,显示及节点的插入,删除
LNode *next;};typedef LNode *LinkList; \/\/ 另一种定义LinkList的方法 \/\/单链表线性表的基本操作(12个)int InitList(LinkList &L){ \/\/ 操作结果:构造一个空的线性表L L=(LinkList)malloc(sizeof(LNode)); \/\/ 产生头结点,并使L指向此头结点 if(!L) \/\/ 存储分配失败 exit(0);L-...
...删除,插入等方法,JAVA,你回答的问题为什么运行不出结果。
s->data=e;s->next=p->next; \/\/插入L中 p->next=s;return OK;}\/\/ListInsert_L 这是插入的算法 太难打了 就先这么多 链表的特点就是指针 一切操作按指针的算法来就OK了 上面给出的是数据结构C的代码 不能运行 这是理论代码 具体的你自己在琢磨琢磨 ...
用C语言编写一个算法,实现有序链表的插入。链表有序且不允许有重复元素...
如代码所示,c++语言,设带头节点的单链表L是一个递增有序表,试写一个函数,将x插入L中,并使L仍是一个有序表。望采纳!
用C语言编写程序建立链表结构体类型实现链表初始化遍历和插入算法
define telemtype char define ok 1 define error 0 define overflow -1 typedef int status;typedef struct bitnode { telemtype data;struct bitnode *lchild,*rchild;}bitnode,*bitree;void preordertraverse(bitree T){ if(T){ printf("%c ",T->data);preordertraverse(T->lchild);preorder...
2010年计算机二级c语言考试
在顺序存储的线性表中,插入或删除数据元素时需要移动大量的数据元素;(2)线性表的顺序存储结构下,线性表的存储空间不便于扩充;(3)线性表的顺序存储结构不便于对存储空间的动态分配。2、线性链表:线性表的链式存储结构称为线性链表,是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的...
你好,数据结构(C语言)中实现有序链表的插入,删除结点基本操作,及两个有...
void creat(); \/\/建立单向动态链表。此函数带回一个指向链表头的指针,用于参赛选手的录入void del(); \/\/用于删除结点,用于参赛选手的删除void search(); \/\/参赛选手成绩的查询void print(); \/\/用于输出链表void rank(); \/\/按个人平均成绩从高到低的顺序进行排序void update(); \/\/参赛选手的修改void menu...
C语言中链表与队列有很么区别
C语言中的链表与队列是两种不同的数据结构,各自有着独特的特性和应用场景。链表作为一种数据存储方式,它并不要求数据在内存中的连续存储,而是通过指针来连接每一个数据节点,从而实现数据的动态访问和管理。链表具有高度的灵活性,可以方便地进行数据的插入和删除操作,这对于需要频繁修改数据结构的应用来...