數據結構C語言版
❶ 數據結構c語言版和C++版有什麼區別嗎
數據結構是抽象的,和具體語言無關。無論是C語還是C++,或者是java,他們都能實現同一種的數據結構。最多的區別就是有些的程序語言在實現某種數據結構時更為便利。
例如lisp語言,天生就是鏈表這種數據結構。
非要找C和C++的有什麼區別,那就是C++可用容器、面向對象的思想(類的繼承等)。實現的方式方法比用C來更多。
數據結構是在整個計算機科學與技術領域上廣泛被使用的術語。它用來反映一個數據的內部構成,即一個數據由那些成分數據構成,以什麼方式構成,呈什麼結構。數據結構有邏輯上的數據結構和物理上的數據結構之分。邏輯上的數據結構反映成分數據之間的邏輯關系,而物理上的數據結構反映成分數據在計算機內部的存儲安排。數據結構是數據存在的形式。 數據結構是信息的一種組織方式,其目的是為了提高演算法的效率,它通常與一組演算法的集合相對應,通過這組演算法集合可以對數據結構中的數據進行某種操作。
❷ 數據結構(c語言版)和數據結構區別
C語言是一種編程的語言,編程的語言有很多種。
而數據結構則是講的是關於一些數據的理論知識。
可以說不管什麼編程語言都能用到數據結構的知識,數據結構是程序設計基礎又核心的知識。
可以將c語言想像為一種語言,那麼數據結構就是一種說話的技巧,如何讓你說話更簡潔,有邏輯,容易讓人聽懂,這表達技巧不管你用中文或者ENGLISH都可以用上。
當然,如果你想成為一個優秀的程序設計人員,數據結構是必須掌握好的
❸ 《數據結構(C語言版)》
你是說清華大學的教材嗎?嚴蔚敏和吳偉民編著的那本?
這本書的話作為教材整體還不錯,但是如果自學的話就比較枯燥了。
其實國內有很多新出的數據結構都不錯,不管是用C++還是JAVA,還是C,或者其他語言描述的,感覺很多都比這本要好。
學習數據結構的話,我推薦看《數據結構與演算法分析 : C語言描述》這本書,個人認為比清華大學的這本講述的要好一些~當然僅僅是個人立場,給個建議。
❹ 數據結構(C語言版)怎麼學啊!
數據結構這門課,主要講了2個問題:第一個就是在程序中如何組織數據,第二個就是常用演算法。
總之,這門課的意義在於講解了編程時的思想,這些思想是跨越語言的。
學習這門課,沒什麼捷徑,就是讀代碼,然後用你會的任何一種編程語言實現它。當把書中的代碼讀懂80%的時候,你就會發現你的編程水平有很大的提高。
❺ 數據結構c語言版
#include "stdio.h"
typedef char datatype;
typedef struct node{
datatype data;
struct node *next;
} stack;
stack * creat(void)
{
char ch;
stack * head;
stack *p;
head=NULL;/*初始化為空*/
ch=getchar( );
while (ch!='\n'){
p=(stack*)malloc(sizeof(stack));/*分配空間*/
p->data=ch;/*數據域賦值*/
p->next=head;/*指定後繼指針*/
head=p;/*head指針指定到新插入的結點上*/
ch=getchar( );
}
return (head);
}
void MakeNull(stack *s)/*使棧s為空*/
{
stack *p=s;
while(s!=NULL){
s=s->next;
free(p);/*釋放空間*/
p=s;
}
}
datatype Top(stack *s)
{
if(Empty(s))/*s為空棧,直接跳出,提示出錯信息*/
printf("The stack is empty.");
else
return s->data;
}
void Pop(stack *s)
{
stack *p;
if(Empty(s)) /*s為空棧,直接跳出,提示出錯信息*/
printf("The stack is empty.");
else{
p=s;
s=s->next;
free(p);/*釋放棧頂空間*/
}
}
void Push(stack *s,datatype x)
{
stack *p;
p=(stack*)malloc(sizeof(stack));
p->data=x;
p->next=s;
s=p;
}
int Empty(stack *s)
{
return(s==NULL);
}
void main()
{
stack* m_stack=creat();
char m_top;
if(!Empty(m_stack))
{
m_top=Top(m_stack);
Pop(m_stack);
}
else
Push(m_stack,'a');
MakeNull(m_stack);
}
❻ 數據結構c語言版嚴蔚敏版
voiddelete_L(LNode*L,inta,intb)
{
LNode*p,*q;
p=L;
q=p;
p=p->next;
if(p==NULL)
printf("鏈表為空");
while(p!=NULL)
{
if((p->data>a)&&(p->data<b))
{q->next=p->next;
free(p);
p=q->next;
}
else
{q=p;
p=p->next;
}
}
}
❼ 數據結構 c語言版(嚴尉敏)
我看了一下,好像沒有代碼,全稱是:
《數據結構(C語言版)》配書光碟 DSDemo
數據結構演算法演示(Windows版)
使 用 手 冊
一、 功能簡介
本課件是一個動態演示數據結構演算法執行過程的輔助教學軟體, 它可適應讀者對演算法的輸入數據和過程執行的控制方式的不同需求, 在計算機的屏幕上顯示演算法執行過程中數據的邏輯結構或存儲結構的變化狀況或遞歸演算法執行過程中棧的變化狀況。整個系統使用菜單驅動方式, 每個菜單包括若乾菜單項。每個菜單項對應一個動作或一個子菜單。系統一直處於選擇菜單項或執行動作狀態, 直到選擇了退出動作為止。
二、 系統內容
本系統內含84個演算法,分屬13部分內容,由主菜單顯示,與《數據結構》教科書中自第2章至第11章中相對應。各部分演示演算法如下:
1. 順序表
(1)在順序表中插入一個數據元素(ins_sqlist)
(2)刪除順序表中一個數據元素(del_sqlist)
(3)合並兩個有序順序表(merge_sqlist)
2. 鏈表
(1)創建一個單鏈表(Crt_LinkList)
(2)在單鏈表中插入一個結點(Ins_LinkList)
(3)刪除單鏈表中的一個結點(Del_LinkList)
(4)兩個有序鏈表求並(Union)
(5)歸並兩個有序鏈表(MergeList_L)
(6)兩個有序鏈表求交(ListIntersection_L)
(7)兩個有序鏈表求差(SubList_L)
================================================
我有,留下email,最好是Gmail
盤中內容
\DSDemoW 數據結構演算法演示系統(Windows版)β測試版
\DSDemoC 數據結構演算法演示系統(C語言描述)V3.1C中文版
Readme.txt 光碟使用說明
對不對?
❽ 數據結構(C語言版)
1.類型定義有問題,將LinkList定義的都改為LNode *吧!
2.有一處else寫為elst了
幫你改了一下,正在是修改後的程序:
可以編譯通過,但不知道邏輯是否正確,自己檢查一下哈!
#include <stdio.h>
#include <malloc.h>
typedef char ElemType;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
int ListInsert_L(LNode *head,int i,char e)
{
LNode *p=head;
LNode *s;
int j;
p=p->next;
for(j=1;j<1;j++)
{
if(p) p=p->next;
else break;
}
if(!p||i<1)
{
printf("請輸入正確的值\n");
return 0;
}
s=(LNode*)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
LinkList CreateList_L(LinkList head)
{
char temp;
LinkList p;
printf("請輸入結點值(輸入0結束):");
fflush(stdin);
scanf("%c",&temp);
while(temp!='0')
{
if(('A'<=temp&&temp<='Z')||('a'<=temp&&temp<='z'))
{
p=(LinkList)malloc(sizeof(LNode));
p->data=temp;
p->next=head->next;
head->next=p;
}
printf("請輸入結點值(輸入0結束):");
fflush(stdin);
scanf("%c",&temp);
}
return head;
}
int ListDel_L(LinkList head,int i)
{
LinkList p,tmp;
int j;
p=head->next;
tmp=head;
for(j=1;j<i;j++)
{
if(p)
{
p=p->next;
tmp=tmp->next;
}
else break;
}
if(!p||i<1)
{
printf("請輸入正確的值:\n");
return 0;
}
tmp->next=p->next;
free(p);
return 1;
}
void ListPint_L(LinkList head)
{
LinkList p;
int i=0;
p=head->next;
while(p!=NULL)
{
i++;
printf("第%d個元素是:",i);
printf("%c\n",p->data);
p=p->next;
}
}
void main()
{
int i;
char cmd,e;
LinkList head;
head=(LinkList)malloc(sizeof(LNode));
head->next=NULL;
CreateList_L(head);
ListPint_L(head);
do
{
printf("i,I...插入\n");
printf("d,D...刪除\n");
printf("q,Q...退出\n");
do
{
fflush(stdin);
scanf("%c",&cmd);
}while ((cmd!='d')&&(cmd!='D')&&(cmd!='i')&&(cmd!='I')&&(cmd!='q')&&(cmd!='Q'));
switch (cmd)
{
case 'i':
case'I':
printf("請輸入你要插入的數據:");
fflush(stdin);
scanf("%c",&e);
printf("請輸入你要插入的位置:");
scanf("%d",&i);
ListInsert_L(head,i,e);
ListPint_L(head);
break;
case 'd':
case 'D':
printf("請輸入你要刪除元素的位置:");
fflush(stdin);
scanf("%d",&i);
ListDel_L(head,i);
ListPint_L(head);
break;
}
}while ((cmd!='q')&&(cmd!='Q'));
}
❾ 數據結構C語言版
完整的C代碼,希望對你有幫助
#include <stdio.h>
#include <stdlib.h>
#define List_Init_Size 10
typedef int ElemType;
typedef struct
{
ElemType *elem;
int listsize; /*線性表的長度*/
int length; /*當前元素個數*/
}SqList;
/*初始化線性表*/
int InitList(SqList *L)
{
L-> listsize=List_Init_Size;
L-> elem=(ElemType*)malloc(List_Init_Size*sizeof(ElemType));
if(!L-> elem)return -1;
L-> length=0;
return 1;
}
void Fen(SqList *L,SqList *Lb,SqList *Lc) //此函數實現分開放置
{
int i,j=0,k=0;
Lb->listsize=5; Lb->elem=(ElemType*)malloc(5*sizeof(ElemType));
Lc->listsize=5; Lc->elem=(ElemType*)malloc(5*sizeof(ElemType));
for(i=0;i<10;i++)
{
if(i%2==0)
{
Lc->elem[j]=L->elem[i];j++;
}
else if(i%2==1)
{
Lb->elem[k]=L->elem[i];k++;
}
}
}
void main()
{
int i,e;SqList L,Lb,Lc;
InitList(&L);
printf("請輸入十個數,用空格隔開:\n");
for(i=0;i<10;i++)
{
scanf("%d",&L.elem[i]);
}
printf("你構造的線性表是:\n");
for(i=0;i<10;i++)
{
printf( "%d ",L.elem[i]);
}
Fen( &L,&Lb,&Lc);
printf("\n線性表Lb為:\n");
for(i=0;i<5;i++)
{
printf( "%d; ",Lb.elem[i]);
}
printf("\n線性表Lc為:\n");
for(i=0;i<5;i++)
{
printf( "%d; ",Lc.elem[i]);
}
}
❿ 嚴蔚敏數據結構c語言版和第二版是一樣的嗎
基本一樣,但是c語言版更強調了抽象數據類型。