c语言商品管理系统用单链表实现插入功能

如题所述

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct node{
char no[20];//存放编号
char name[40];//存放名称
int reserve;//库存
struct node *next;
}NODE;

typedef struct link{
NODE *front;//头指针
NODE *rear;//尾指针
}LINK;

NODE *create_node(void){
NODE *node = (NODE *)malloc(sizeof(NODE));
printf("请输入货物编号:");
gets(node->no);
printf("请输入货物名称:");
gets(node->name);
printf("请输入货物名称:");
char ch;
while( (ch= getchar()) != '\n');//rewind(stdin);
scanf("%d",&node->reserve);
node->next = NULL;
return node;
}

void init_link(LINK *link){
link->rear = NULL;
link->front = NULL;
}

int link_empty(LINK *link){
return link->front == NULL ? 1: 0;
}

int node_num(LINK *link){
int num = 0;
if( link_empty(link)){
return num;
}
num = 1;
NODE *node = link->front;
while(node != link->rear){
node = node->next;
++num;
}
return num;
}

/*NODE *node_find(LINK *link,const int n){
int num = node_num(link);
if(num < n){
printf("公有节点%d个,无法找到第%d个节点\n",num,n);

}
else{

}
}
*/
void node_push(LINK *link){
NODE *node = create_node();
if(link->front == NULL){
link->front = node;
link->rear = node;
node->next = NULL;
}
else{
link->rear->next = node;
link->rear = node;
node->next = NULL;
}
}

void node_insert(LINK *link,const int n){
int num = 0,i = 1;
NODE *node = link->front;
NODE *new_node = NULL;
if ( link_empty(link) ){
printf("链表为空,将建立链表!\n");
node_push(link);
}
else{
if( n <= 1){
printf("在链表头插入数据\n");
new_node = create_node();
new_node->next = link->front;
link->front = new_node;
}
else if( n>= num = node_num(link) ){
printf("节点数少于%d,将在末尾插入节点.\n",n);
node_push(link);
}
else{
printf("在第n个节点后插入数据\n");
if(num >= n){
while( i != n){
node = node->next;
++i;
}
new_node = create_node();
new_node-next = node->next;
node->next = new_node;
}
}
}

void find_node_insert(LIKNK *link,const char *name){
NODE *node = link->front;
if( link_empty(link) )
node_push(link);
else {
while(strcmp(node->name,name) != 0){
 if(node != link->rear)
node = node->next;
else break;

}
if(node != NULL){

NODE *new_node = create_node();
new_node-next = node->next;
node->next = new_node;
}
else {
printf("没有找到相关货物,将在头节点插入数据\n");
intsert(link,0);
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

c语言超市商品管理系统,要有商品的录取查找删除添加等功能。用链表实现...
\/\/利用单链表编写一个学生成绩系统。(具有查询成绩、修改成绩、删除成绩、添加成绩、全班平均等功能。)include<stdio.h> include<stdlib.h> include<string.h> define MAXSIZE 100 typedef char nametype;typedef float gradetype;typedef struct node{ nametype name[MAXSIZE];gradetype grade;struct...

用c语言实现超市商品管理系统,用指针实现商品的插入、删除操作。_百度...
可以用链表,大致就是,你创建一个结构体,结构体里有商品的一些信息,然后关键的是有个该结构体的指针,这个指针是指向下一个商品的结构体地址的,依次类推,直到最后一个商品的指针是指向null的,然后开始插入商品的思路:①创建新商品的信息②先让你要插入的结构体的指针指向要插入的那个位置后边的地...

C语言实现单链表的建立、输入、插入、删除、查找元素并返回位置_百度知 ...
功能:C语言实现单链表的建立、输入、插入、删除、查找元素并返回位置 \/ include"stdio.h"include"stdlib.h"include"malloc.h"\/*假设输入的数据为3个--我比较好操作-_-*\/ define size 3 typedef struct List { int num;int shuju;struct List *next;}list;\/*头结点*\/ list *setup_list(list...

求用c语言初始化一个单链表,然后插入删除的源代码
PNODE create_list(void); \/\/创建链表 void traverse_list(PNODE); \/\/遍历链表 bool is_empty(PNODE); \/\/链表是否为空 int list_len(PNODE);\/\/求链表长度 bool insert_list(PNODE,int , int ); \/\/插入链表结点 bool del_list(PNODE, int, int *);\/\/删除链表结点 void sort_l...

C语言,单链表和节点插入问题?
答案如下

用C语言头插法或尾插法建立带头结点的单链表,实现单链表上的插入,删除...
LinkList p; \/* 声明一结点p *\/ p = L->next; \/* 让p指向链表L的第一个结点 *\/ j = 1; \/* j为计数器 *\/ while (p && jnext; \/* 让p指向下一个结点 *\/ ++j;} if ( !p || j>i )

C语言 单链表插入的代码是?
在给定的单链表的第i位上插入值为n的节点。include <stdio.h> include<malloc.h> define N 5 typedef int elemtype;typedef struct node { elemtype data;struct node *next;}linklist;linklist *Creatlist(linklist*L){ L=(linklist*)malloc(sizeof(linklist));L->next=NULL;return L;} in...

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

线性单链表的初始化、插入算法
\/*插入元素*\/ void Insert(int n){ NODE *tmp;tmp = (NODE*)malloc(sizeof(NODE));if(tmp == NULL){ return ;} tmp->data = n;tmp->next = NULL;tail->next = tmp;tail = tmp;} \/\/输出链表 void PrintList(){ NODE *curNode = head;while(curNode != NULL){ printf("%d...

用C语言编程实现单链表的基本操作
\/\/创建单链表,头插入法 { LNode p;if((head=(LNode )malloc(sizeof(LNode)))==NULL)printf("aply error\\n");head->next=NULL;head->ch = '\\0';int i= 0;printf("请一次输入A-Z:\\n");for(i = 0 ;i < 26;++i){ p=(LNode )malloc(sizeof(LNode));if(!p)printf("a...

相似回答