VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 727|回复: 3

请教各位高手:数据结构的问题

[复制链接]

2

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-21 20:20:01 | 显示全部楼层 |阅读模式
struct node{
char *name;
struct node *next;
};
struct node *Head;
Head为单向链表头,并按照其成员变量name的字符序大小排列。
分别编写函数添加和删除一个struct node类型的结点。
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-31 21:54:01 | 显示全部楼层
这题有点大...
回复

使用道具 举报

0

主题

24

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-2-2 12:27:02 | 显示全部楼层
添加:逐个节点遍历,直到找到正确的插入位置。
删除:逐个节点遍历,直到找到需要删除的节点。

都是一些基本的指针操作,没什么复杂的,自己试试看。
回复

使用道具 举报

0

主题

78

帖子

29.00

积分

新手上路

Rank: 1

积分
29.00
发表于 2020-2-3 19:15:01 | 显示全部楼层
//线性链表插入,删除操作

#include <stdio.h>
#include <malloc.h>
typedef struct LNode
{int data;
  struct LNode *next;
  }LNode,*linklist;
int Init(linklist *L)
{*L=(linklist)malloc(sizeof(LNode));
  (*L)->next=NULL;
  return 1;
}
int insert (linklist L,int i,int e)
{linklist p,s;
  int j=0;
   p=L;
  while(p&&j<i-1)
  {p=p->next;j++;}
   if(!p||j>i-1)
    return 0;
   s=(linklist)malloc(sizeof(LNode));
    s->data=e;
    s->next=p->next;
    p->next=s;
    return 1;
  }
int del(linklist L,int i,int *e)
{linklist p,q;
  int j=0;
  p=L;
  while(p->next&&j<i-1)
  {p=p->next;j++;}
  if(!p->next||j>i-1)
  return 0;
     q=p->next;
      p->next=q->next;
      *e=q->data;
      printf("The deleted number:%d\n\n",*e);
   free(q);
   return 1;
}
void print(linklist L)
{linklist p;
for(p=L->next;p;p=p->next)
  printf("%4d",p->data);
printf("\n");
}
void main()
{linklist L,p;
int i,e,j,t;
t=Init(&L);
printf("%d\n\n",t);
for(i=1;i<=5;i++)
  {scanf("%d",&e);
   insert(L,i,e);
  }
  print(L);
  printf("\n");
  printf("Enter the delete seat:");
  scanf("%d",&j);
  printf("\n");
  del(L,j,&e);
  print(L);
  printf("\n\n");
  }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表