⑴ 數據結構(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語言版)》配書光碟 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語言到底有幾個版本
有幾種都沒關系,反正基本都是一樣的。
不一樣的版本,使用的語言還是一樣的C,所以不用擔心版本不同。
至於C Builder,應改是C++ Builder 是基於C上的另一種編程語言。
以下是介紹:
一個公司出的以c為基礎的編程工具
C++builder
C++Builder 是Borland公司98年推出的全新32位Windows開發工具。C++Builder 不僅繼承了Delphi使用簡便,功能強大,效率高等特點,而且它還結合C++語言所有優點.是一個Windows環境下基於C++語言進行快速程序開發的集成開發環境,提供了一個強大的可視化控制項庫,能夠使用C++語言方便、快速、高效地進行Windows應用程序開發,尤其是開發界面、資料庫等Windows應用程序更加快速、高效。
C++ Builder是Borland繼Delphi之後又推出的一款高性能可視化集成開發工具。C++ Builder具有快速的可視化開發環境:只要簡單地把控制項(Component)拖到窗體(Form)上,定義一下它的屬性,設置一下它的外觀,就可以快速地建立應用程序界面;C++ Builder內置了100多個完全封裝了Windows公用特性且具有完全可擴展性(包括全面支持ActiveX控制項)的可重用控制項;C++ Builder具有一個專業C++開發環境所能提供的全部功能:快速、高效、靈活的編譯器優化,逐步連接,CPU透視,命令行工具等。它實現了可視化的編程環境和功能強大的編程語言(C++)的完美結合。
C++ Builder優化的32位原碼(Native Code)編譯器建立在Borland公司久經考驗的編譯技術基礎之上,提供了高度安全性、可靠性、快速性的編譯優化方法,完全編譯出原始機器碼而非中間碼,軟體執行速度大大提高。在編譯和連接過程中,C++ Builder自動忽略未被修改的原代碼和沒有使用的函數,從而大大提高了編譯和連接速度。C++ Builder的CPU透視工具包括五個獨立的小面板,可以對正在運行程序從內部進行深層次的了解。另外C++ Builder還提供了一個專業開發環境所必需的命令行工具,以幫助建立C++程序或者准備編譯和連接的程序進行更精細的控制。
C++ Builder可以編譯所有符合ANSI/ISO標準的原代碼,支持最新ANSI C++/C語言特徵:模板(Templates)、例外(Exceptions)、運行類型信息(Runtime Type Information)、Namespaces等,另外它還可以使用標准C++庫且支持標准模板庫(STL),以前的所有C++/C原代碼可以不經過修改,直接移植到C++ Builder環境下來。C++ Builder完全支持32位長文件名、多線程程序設計,且允許程序員直接調用任何Win95和NT API函數。
C++ Builder的集成開發環境(IDE)提供了可視化窗體設計器、對象觀察器、控制項板、工程管理器、集成編輯器和調試器等一系列可視化快速應用程序開發(RAD)工具,讓程序員可以很輕松地建立和管理自己的程序和資源。
不久前對開發工具優劣的討論在程序員中引起極大的反響,紛紛在論壇發表自己的看法,程序員們都堅定的支持自己的開發工具。爭論集中在borland和微軟的開發工具上,borland提供了兩種優秀的開發工具Delphi和C++ Builder,不少人欣賞borland產品的優越性能,而更多的人則看好微軟的強大實力,但在小編看來在目前他們都能在市場中存在,那麼就證明無論C++ Builder還是Vsiual C++都是非常優秀的開發工具,如果你選擇了,那麼就堅持下去。在這場爭論中有不少精彩的評論,我選擇了其中的兩篇佼佼者供大家賞析。
⑷ 數據結構C語言版
//二叉樹的先序遍歷序列:ABCEDFHGIJ
//二叉樹的中序遍歷序列:ECBHFDJIGA
//二叉樹的後序遍歷序列:ECHFJIGDBA
#include"stdio.h"
#include"stdlib.h"
structtree
{
chardata;
structtree*left;
structtree*right;
};
typedefstructtreetreenode;
typedeftreenode*btree;
btreecreatebtree(char*data,intpos,intmaxPos)//遞歸創建法
{
btreenewnode;
if(data[pos]==0||pos>maxPos)
{
returnNULL;
}
else
{
newnode=(btree)malloc(sizeof(treenode));
newnode->data=data[pos];
newnode->left=createbtree(data,2*pos,maxPos);
newnode->right=createbtree(data,2*pos+1,maxPos);
returnnewnode;
}
}
voidinorder(btreeptr)
{
if(ptr!=NULL)
{
inorder(ptr->left);
printf("%C",ptr->data);
inorder(ptr->right);
}
}
voidpreorder(btreeptr)
{
if(ptr!=NULL)
{
printf("%C",ptr->data);
preorder(ptr->left);
preorder(ptr->right);
}
}
voidpostorder(btreeptr)
{
if(ptr!=NULL)
{
postorder(ptr->left);
postorder(ptr->right);
printf("%C",ptr->data);
}
}
intmain()
{
btreeroot=NULL;
inti;
chardata[64]={0,'A','B',0,'C','D',0,0,
'E',0,'F','G',0,0,0,0,
0,0,0,0,'H',0,'I',0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,'J',0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
root=createbtree(data,1,63);
printf("二叉樹的順序存儲內容: ");
for(i=1;i<64;i++)
{
if(data[i]==0)
{
printf("^");
}
else
{
printf("%C",data[i]);
}
if(i%8==7)printf(" ");
}
printf(" 二叉樹的先序遍歷序列:");
preorder(root);
printf(" 二叉樹的中序遍歷序列:");
inorder(root);
printf(" 二叉樹的後序遍歷序列:");
postorder(root);
printf(" ");
return0;
}
⑸ C語言的各種版本
Quick C,Win-TC
⑹ 數據結構c語言版
定義連接函數LinkList c時少了一個中括弧,不知道是你復制過來的時候粘少的還是本來就是這樣的,而且不知道你定義的是C文件還是C++文件,如果是純粹的C語言,是不應該用引用的,引用是C++中才增加的新功能,而你的函數使用的是&引用符而不是指針,如果按C編譯是不能出結果的。估計是教科書上的代碼吧,需要改一下,因為教科書上是偽代碼,指針用的都是引用符。
⑺ C語言最新版本是什麼
你是說語言標准還是ide?
關於標准網路如下:1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchie合著了著名的《The C Programming Language》一書。通常簡稱為《K&R》,也有人稱之為《K&R》標准。但是,在《K&R》中並沒有定義一個完整的標准C語言,後來由美國國家標准化協會(American National Standards Institute)在此基礎上制定了一個C語言標准,於一九八三年發表。通常稱之為ANSI C。
K&R第一版在很多語言細節上也不夠精確,對於pcc這個「參照編譯器」來說,它日益顯得不切實際;K&R甚至沒有很好表達它所要描述的語言,把後續擴展扔到了一邊。最後,C在早期項目中的使用受商業和政府合同支配,它意味著一個認可的正式標準是重要的。因此(在M. D. McIlroy的催促下),ANSI於1983年夏天,在CBEMA的領導下建立了X3J11委員會,目的是產生一個C標准。X3J11在1989年末提出了一個他們的報告[ANSI 89],後來這個標准被ISO接受為ISO/IEC 9899-1990。
1990年,國際標准化組織ISO(International Organization for Standards)接受了89 ANSI C 為I SO C 的標准(ISO9899-1990)。1994年,ISO修訂了C語言的標准。
1995年,ISO對C90做了一些修訂,即「1995基準增補1(ISO/IEC/9899/AMD1:1995)」。1999年,ISO有對C語言標准進行修訂,在基本保留原來C語言特徵的基礎上,針對應該的需要,增加了一些功能,尤其是對C++中的一些功能,命名為ISO/IEC9899:1999。
2001年和2004年先後進行了兩次技術修正。 目前流行的C語言編譯系統大多是以ANSI C為基礎進行開發的,但不同版本的C編譯系統所實現的語言功能和語法規則有略有差別。
c語言主流編譯器最新的是vc++2010(包含在vs2010中), gcc4.6
⑻ 數據結構(c語言版)
談談如何學習數據結構:
1.如果你沒有學過C語言,或者C語言學的不好的時候把數據結構當成一本數學書來學,它所講述的都是一些簡單的圖論。在你的大腦中的主線不能丟失:線性結構,樹結構和圖結構。當你不再考慮復雜的程序設計時,僅僅研究個個離散點之間的關系,似乎數據結構也就不會那麼難了。
2.學習好了抽象的離散點關系後,再鞏固一下你的C語言水平,書中描述的都是類C。因此你只要學習簡單的C定義、判斷、循環語句就基本能看的懂課本中所有程序了。
3.以上都完成後,從數據結構的線性表開始。線性表中順序表似乎是為你學習C語言設計的,學好線性表的鏈表是你起步的關鍵。後面的樹結構,圖結構,排序,查找都少不了鏈式結構,往往這個也是最難的。
4.看程序的時候一定要自己在紙上畫畫,最好先學會畫程序的流程圖,也許那樣你學程序也就會更快一些。
5.數據結構是程序設計的最基本也是最有用的地方,學完之後你會受益匪淺的,也許這本書可以決定你以後的道路或者命運。
祝你成功!
⑼ C語言的最新版本是多少
C語言最新標準是C99. 即1999年出的最新C語言標准。
後續C語言不再出新標准,而是轉向C++標準的完善。最新的C++標准為2011年出的C++11.
C語言歷史版本:
1988年, 美國國家標准研究所(ANSI)為C語言制定了第一套C語言標准,即ANSI標准,在1990年,ISO再次採用了這種標准,所以也有一種別稱叫「C90」。
1999年,ISO對C語言進行了修訂,簡稱「C99」。後來ANSI又採用了這種標准。
⑽ 數據結構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);
}